這篇文章主要為大家詳細介紹了java設計模式學習之裝飾模式的相關資料,具有一定的參考價值,有興趣的小伙伴們可以參考一下
裝飾模式:動態的給一個物件增加一些額外的職責,就增加功能來說,裝飾模式比生成子類別更有彈性。
優點:裝飾類別和被裝飾類別可以獨立發展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態擴展一個實現類別的功能。
缺點:多層裝飾比較複雜。
實例:給一個人設定穿衣
1:程式碼結構圖
#2:建立一個person類別( ConcreteComponent)
package DecoratorModel; /** * 2017-10-9 10:39:09 * 装饰器设计模式 * Person 类 ConcreteComponent * @author 我不是张英俊 * */ public class Person { public Person(){} private String name; public Person(String name){ this.name=name; } public void Show(){ System.out.println("装扮的"+name); } }
3:服飾類別
package DecoratorModel; /** *服饰类(Decorator) * @author 我不是张英俊 * */ public class Finery extends Person{ protected Person component; //打扮 public void Decorate(Person component){ this.component=component; } public void Show(){ if(component!=null){ component.Show(); } } }
4:具體服飾類別
public class Tshirts extends Finery { public void Show(){ System.out.println("大T恤"); super.Show(); } } public class BigTrouser extends Finery { public void Show(){ System.out.println("垮裤"); super.Show(); } } public class Sneakers extends Finery { public void Show(){ System.out.println("破球鞋"); super.Show(); } } public class Suit extends Finery { public void Show(){ System.out.println("西装"); super.Show(); } } public class Tie extends Finery { public void Show(){ System.out.println("领带"); super.Show(); } } public class LeatherShoes extends Finery { public void Show(){ System.out.println("皮鞋"); super.Show(); } }
5:測試類別
public class test { public static void main(String[] args) { Person xc=new Person("旺财"); Sneakers pqx=new Sneakers(); BigTrouser kk=new BigTrouser(); Tshirts dtx=new Tshirts(); pqx.Decorate(xc); kk.Decorate(pqx); dtx.Decorate(kk); dtx.Show(); } }
6:控制台
大T卹
垮褲
破球鞋
裝扮的旺財
以上是Java之裝飾模式學習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境