1. 程式人生 > >代理模式和裝飾器模式的區別與聯絡

代理模式和裝飾器模式的區別與聯絡

最近上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功能


兩者的定義
裝飾器模式:能動態的新增或組合物件的行為。
代理模式:為其他物件提供一種代理以控制對這個物件的訪問.
裝飾模式是“新增行為”,而代理模式是“控制訪問”。關鍵就是我們如何判斷是“新增行為”還是“控制訪問”。