您的位置:首页 > 编程语言 > Java开发

java中设计模式-delegate(代理)

2016-12-27 14:30 330 查看
http://yangguangfu.iteye.com/blog/815787---这个是很好的参考

关于代理的一个例子:开会--老板--秘书小明/开会--CEO--秘书小明,小明可以代替老板和CEO开会,小明就是那个代理

1.开会的职能接口(类名起的有问题):

/*
* 抽象对象--可以开会的人
*
*/
public interface MiShu {
public void kaiHui();//给秘书定义一个开会的方法
}
2.老板和CEO的形象:
/*
* 老板开会
*
*/
public class TheBoos implements MiShu{

@Override
public void kaiHui() {
// TODO Auto-generated method stub
System.err.println("老板在亲自开会");
}

}

/*
* CEO
*/
public class TheCEO implements MiShu{

@Override
public void kaiHui() {
// TODO Auto-generated method stub
System.err.println("牛逼的CEO正在开会");
}

}
3.代理对象,小明出厂,其实也就是秘书对象,但是例子的名字起的有问题,例子中的秘书类应该叫可以开会的人:
/*
* 我们的小明同学就是其中一个可以开会的人
*
*/
public class XiaoMing implements MiShu{
private MiShu mishu;

public XiaoMing(MiShu mishu) {
//可以是CEO找小明代替开会也可以是老板
this.mishu = mishu;
}
public XiaoMing() {
//这个人默认表示老板
this.mishu = new TheBoos();
}
@Override
public void kaiHui() {
// TODO Auto-generated method stub
System.err.println("小明同志在代替老板开会");
mishu.kaiHui();
}

}4.会议开始了,小明同学要开始装逼的了:
public class MyClient {
public static void main(String[] args) {
//CEO找到小明,要求小明代替开会
TheCEO ceo=new TheCEO();
XiaoMing xiaoming=new XiaoMing(ceo);
xiaoming.kaiHui();
//默认是小明代替老板开会
xiaoming=new XiaoMing();
xiaoming.kaiHui();
}
} 来吧,看下输出
小明同志在代替老板开会
牛逼的CEO正在开会
小明同志在代替老板开会
老板在亲自开会

很高兴,我们的小明同学装逼成功 了@!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: