代理模式和装饰器模式的区别与联系
最近上javaeye,看到不少人讨论java设计模式,本人只略熟悉几种常用的设计模式,看到有人讨论代理模式和装饰器模式的区别,步骤是
(poxy代理模式)
1。定义一个接口
2。业务类实现接口
3。定义一个poxy类控制访问实现类权限
Interface Forum{
public void updateForumName(String name);
}
DbForum implements Forum{
public void updateForum(String name){
this.name = name
updateObj(name);
}
}
ForumPoxy implements Forum{
Forum dbForum = null;
String name= null;
public ForumPoxy (Forum DbForum,String name){
this.name = name
this.dbForum = DbForum;
}
public void updateForum(String name){
if(isAdmin()){
dbForum.updateForum();
}
}
(Decorator装饰器模式)
1。定义一个接口
2。业务类实现该接口
3。定义一个伪实现类,扩展业务实现类功能
FileReader fr = new FileReader("path");
BufferReader br = new BufferReader(fr);
BufferReader ,FileReader同时实现Reader接口,BufferReader扩展FileReader,额外新增FileReader功能
两者的定义
装饰器模式:能动态的新增或组合对象的行为。
代理模式:为其他对象提供一种代理以控制对这个对象的访问.
装饰模式是“新增行为”,而代理模式是“控制访问”。关键就是我们如何判断是“新增行为”还是“控制访问”。