常用设计模式-代理模式
1.代理模式uml类图
就拿最近比较火的某某wang 事件进行举例。类少直接上代码!
package dailimodel;
/**
*
* 实现简单代理模式必要条件
*
* 代理类,被代理类,代理类和被代理实现的统一接口,调用者类
*
* 电视台 mangguoTV
*
* 代理模式,开发中是很常用的设计模式
*
*
* 优点: 代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;
*
* 代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。
*
* 缺点:
*
* 由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢
*
* 实现代理类也需要额外的工作,从而增加了系统的实现复杂度。
*
* @author weichyang
*
*/
public class MangGuoTv {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("connection actor wang to make move");
// 代理人送不会 拍电影,但是song 作为wang的代理人 可以代wang 接受。
AgentSong aSong = new AgentSong();
aSong.acting();
// 艺人wang wife want happy,agent song 去帮助
aSong.makeHappy();
}
}
2.代理:
package dailimodel;
/**
* 代理人 song
*
* @author weichyang
*
*/
public class AgentSong implements DayWork {
ActorWang actorWang = null;
public AgentSong() {
actorWang = new ActorWang();
}
@Override
public void makeHappy() {
actorWang.makeHappy();
}
@Override
public void acting() {
actorWang.acting();
}
}
3.被代理:
package dailimodel;
/**
* 艺人
* @author weichyang
*
*/
public class ActorWang implements DayWork {
@Override
public void makeHappy() {
System.out.println("with MA happy !!!!");
}
@Override
public void acting() {
System.out.println("make move ba ba qu na!");
}
}
4.实现统一的接口:
package dailimodel;
/**
* 日常工作
*
* @author weichyang
*
*/
public interface DayWork {
void makeHappy(); // you konw that, what is happy?
void acting(); // 拍戏
}