裝飾者模式體現了 敏捷開發思想中的 對類要 開放擴充套件,關閉修改.
例子:乙個person主類
若干裝飾品類: 紅衣服,藍衣服,藍鞋子,紅鞋子
測試: new乙個person 給他穿上紅衣服藍鞋子
code:
person介面:
public inte***ce iperson
person類:
package com.husw.design.decorator;
public class person implements iperson
public string decorate()
public string getname()
public void setname(string name)
}
裝飾品:
紅衣服:
package com.husw.design.decorator;
public class redclothesperson implements iperson
public string decorate()
public iperson getp()
public void setp(iperson p)
}
package com.husw.design.decorator;
public class blueclothesperson implements iperson
public string decorate()
public iperson getp()
public void setp(iperson p)
}
藍鞋子:
package com.husw.design.decorator;
public class blueshoesperson implements iperson
public string decorate()
public iperson getp()
public void setp(iperson p)
}
測試**:
iperson p = new person("lilei");
system.out.println(p.decorate());//赤身
p = new redclothesperson(p);
system.out.println(p.decorate());//穿上紅衣
p = new blueshoesperson(p);
system.out.println(p.decorate());//穿上藍鞋 }}
執行結果:
lilei
lilei,red clothes
lilei,red clothes,blue shoes
例子原始碼svn:
設計模式 decorator模式
兩點 目的 在不改變被裝飾類功能的前提下增加新功能 特點 繼承是子類和父類強耦合,橋接是低耦合 例子 class print 抽象介面 virtual int getcolumns virtual int getrows virtual string getrowcontent int row el...
Decorator設計模式
雖然設計模式分得太細會有過度的趨勢,decorator某種程度上也是一種facade模式。但是實現起來還是比較漂亮的。而後面那個人的class arlist list,ilist的方法就不是decorator。它沒有乙個內部的list。這樣 however,now all of list s met...
設計模式 Decorator裝飾模式
decorator裝飾模式是一種結構型模式,它主要是解決 過度地使用了繼承來擴充套件物件的功能 由於繼承為型別引入的靜態特質,使得這種擴充套件方式缺乏靈活性 並且隨著子類的增多 擴充套件功能的增多 各種子類的組合 擴充套件功能的組合 會導致更多子類的膨脹 多繼承 繼承為型別引入的靜態特質的意思是說以...