動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活。
1.在不影響其他物件的情況下,以動態、透明的方式給單個物件新增職責。
2.處理那些可以撤消的職責。
3.當不能採用生成子類的方法進行擴充時。
1.component
定義乙個物件介面,可以給這些物件動態地新增職責。
2.concretecomponent
定義乙個物件,可以給這個物件新增一些職責。
3.decorator
維持乙個指向component物件的指標,並定義乙個與component介面一致的介面。
4.concretedecorator
向元件新增職責。
裝飾者模式
1.component
public inte***ce person
2.concretecomponentpublic class man implements person
}
3.decoratorpublic abstract class decorator implements person
public void eat()
}
4.concretedecoratorpublic class mandecoratora extends decorator
public void reeat()
}
public class mandecoratorb extends decorator
}
5.testpublic class test
}
5.執行結果男人在吃
再吃一頓飯
mandecoratora類
***************
mandecoratorb類
結構型模式 裝飾者模式
總結解決乙個問題 裝飾者模式 program ade someproblem author cade franklin create 2019 12 28 28 19 public abstract class drink string getdesc abstract float cost 接下來...
裝飾者模式 結構型模式
文章優先發表在個人部落格 我們現在有乙個賣咖啡的需求。我們有咖啡,我們也有配料 巧克力 牛奶 現在我們要設計乙個程式計算使用者這杯咖啡的 咖啡 配料 我們把每種組合都列舉出來。比如 咖啡 巧克力 咖啡 雙份巧克力 咖啡 牛奶 這樣的確很簡單的就達到了我們的需求但是有乙個問題就是產生很多的類,當我們新...
結構型模式 裝飾者設計模式
裝飾模式指的是在不必改變原類檔案和繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件,比如處理流。應用場景 需要擴充套件乙個類的功能,或給乙個類新增附加職責。優點就是耦合性低,重用性高 高內聚,低耦合 按照一般的方法,要麼就是分別修改各自的read方法,...