定義:為另一個對象提供一個替身或者占位符以控制這個對象的訪問。
通常代理模式有三個角色1.抽象接口(定義了代理對象和真實處理事務的對象所需實現(xiàn)的方法)2.真實事務處理對象3.代理對象。
案例演示:這次采用打印機的比喻來對代理模式進行簡單的解釋借帘。
1.首先定義打印機接口婆跑。
public interface DayinJi {
// 打印文字
void outZi();
// 打印圖片
void outImage();
}
2.定義真實事務處理打印機對象
public class DaYnJiIml implements DayinJi{
private static DaYnJiIml dayinji;
// 構(gòu)造私有化僅可以通過getInstance()獲取唯一對象
private DaYnJiIml(){}
public static DaYnJiIml getInstance(){
if(dayinji==null){
synchronized (DaYnJiIml.class) {
if(dayinji==null){
dayinji=new DaYnJiIml();
}
}
}
return dayinji;
}
@Override
public void outZi() {
// TODO Auto-generated method stub
System.out.println("打印文字");
}
@Override
public void outImage() {
// TODO Auto-generated method stub
System.out.println("打印圖片");
}
}
3.定義代理打印機
public class DaYinJiProxy implements DayinJi{
private DaYnJiIml mDaYinJi;
public DaYinJiProxy() {
// TODO Auto-generated constructor stub
// 獲取打印機對象實例
mDaYinJi=DaYnJiIml.getInstance();
}
@Override
public void outZi() {
// TODO Auto-generated method stub
mDaYinJi.outZi();
}
@Override
public void outImage() {
// TODO Auto-generated method stub
mDaYinJi.outImage();
}
}
4.通過實現(xiàn)代理打印機來進行打印
public class Clint {
public static void main(String[] args) {
DaYinJiProxy daYinJiProxy=new DaYinJiProxy();
daYinJiProxy.outImage();
daYinJiProxy.outZi();
}
}
效果展示
效果展示