研究了一下《Java核心技术》的代理,没看明白,又从网上查了查资料,根据自己的理解整理了一下
代理模式有三个角色:
1.抽象主题角色
2.代理主题角色
3.实际被代理角色
// 产品IPadMini,国内是不能买到的,因为Apple公司没有授权;国内用户只能在网上眼看着别人玩(抽象主题角色)
interface IPadMiniFromUS {
public void theIPadMini();
}
// 我公司通过争取代理该款产品,并获得一个合理的售价(代理主题角色)
class MyProxyCompany implements IPadMiniFromUS {
private IPadMiniFromUS customer;
public MyProxyCompany(IPadMiniFromUS customer) {
this.customer = customer;
}
public MyProxyCompany() {
}
public void setCustomer(IPadMiniFromUS customer) {
this.customer = customer;
}
public void theIPadMini() {
System.out.println("这部IPadMini的功能是。。。尺寸是。。。重量是。。。售价是。。。");
customer.theIPadMini();
System.out.println("我买到了IPadMini");
}
}
//实际被代理主题角色
class Customers implements IPadMiniFromUS {
@Override
public void theIPadMini() {
System.out.println("我在看IPadMini。");
}
}
//测试
public class ProxyApple {
/**
* @param args
*/
public static void main(String[] args) {
Customers xiaoming = new Customers();
MyProxyCompany mpc = new MyProxyCompany(xiaoming);
mpc.theIPadMini();
}
}
类MyProxyCompany跟类Customers必须实现想同的接口,因为公司想赚钱必须知道顾客想要什么,顾客想要IPadMini,没地儿买(除非自己出国买),公司得之此消息后,通过各种手段得到代理权(实现IPadMiniFromUS接口),顾客想买IPadMini直接到MyProxyCompany就可以实现了,从此淫们过上了幸福的生活。。。。。。