概述:
静态代理: 代理对象是确定的
委托者角色:实现抽象角色,定义委托角色所要实现的业务逻辑,供代理角色调用。
代理角色:实现抽象角色,是委托角色的代理,通
过委托角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
抽象角色:声明委托角色实现的业务方法。
接下来我们以西门案例进行介绍.
西门想找金莲happy,但是又不能直接去找(显然不合理,武大郎会跟西门拼命) 所以就找了王婆做中间代理,以做衣服的名义将两人约到房间.
王婆除了有代理的功能外应该还有自己特有的功能,;例如:开房间,打扫战场.
以下是代码实现.
定义一个接口
public interface FindHappy {// 抽象角色
void happy();
}
定义一个金莲类
public class JinLian implements FindHappy {
@Override
public void happy() {
System.out.println("金莲和西门在happy...");
}
}
定义一个王婆类
public class WangPo implements FindHappy {
FindHappy findHappy;
public WangPo(FindHappy findHappy) {
this.findHappy = findHappy;
}
public void openHouse(){
System.out.println("王婆以做衣服的名义把2人约到房间...");
}
@Override
public void happy() {
openHouse();
// 让委托者happy() 金莲
findHappy.happy();
clear();
}
public void clear(){
System.out.println("王婆打扫战场...");
}
}
定义一个西门类
public class XiMen {
public static void main(String[] args) {
/**
静态代理: 代理对象是确定的
委托者角色:实现抽象角色,定义委托角色所要实现的业务逻辑,供代理角色调用。
代理角色:实现抽象角色,是委托角色的代理,通
过委托角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
抽象角色:声明委托角色实现的业务方法。
*/
/* JinLian jinLian = new JinLian();
jinLian.happy();*/
JinLian jinLian = new JinLian();
// YanPoXi yanPoXi = new YanPoXi();
WangPo wangPo = new WangPo(jinLian);
wangPo.happy();
}
}
结果: