如何在java中使用裝飾者模式?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元錫林郭勒盟做網(wǎng)站,已為上家服務(wù),為錫林郭勒盟各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
Java主要應(yīng)用于:1. web開發(fā);2. Android開發(fā);3. 客戶端開發(fā);4. 網(wǎng)頁開發(fā);5. 企業(yè)級應(yīng)用開發(fā);6. Java大數(shù)據(jù)開發(fā);7.游戲開發(fā)等。
1、使用說明
(1)裝飾者模式可以帶來比繼承更加靈活的擴(kuò)展功能,使用更加方法,可以通過組合不同的裝飾者對象來獲取具有不同行為狀態(tài)的多樣化的結(jié)果。裝飾者模式比繼承更具良好的擴(kuò)展性,完美的遵循開閉原則,繼承是靜態(tài)的附加責(zé)任,裝飾者則是動(dòng)態(tài)的附加責(zé)任。
(2)裝飾類和被裝飾類可以獨(dú)立發(fā)展,不會相互耦合,裝飾模式是繼承的一個(gè)替代模式,裝飾模式可以動(dòng)態(tài)擴(kuò)展一個(gè)實(shí)現(xiàn)類的功能。
2、實(shí)例
public class HelloWorld { public static void main(String[] args) { //點(diǎn)一份炒飯 FastFood food = new FriedRice(); //花費(fèi)的價(jià)格 System.out.println(food.getDesc() + " " + food.cost() + "元"); System.out.println("========"); //點(diǎn)一份加雞蛋的炒飯 FastFood food1 = new FriedRice(); food1 = new Egg(food1); //花費(fèi)的價(jià)格 System.out.println(food1.getDesc() + " " + food1.cost() + "元"); System.out.println("========"); //點(diǎn)一份加培根的炒面 FastFood food2 = new FriedNoodles(); food2 = new Bacon(food2); //花費(fèi)的價(jià)格 System.out.println(food2.getDesc() + " " + food2.cost() + "元"); } } // 快餐抽象類 abstract class FastFood { private float price; private String desc; public FastFood() {} public FastFood(float price, String desc) { this.price = price; this.desc = desc; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } // 獲取價(jià)格 public abstract float cost(); } // 炒飯 class FriedRice extends FastFood { public FriedRice() { super(10, "炒飯"); } @Override public float cost() { return getPrice(); } } // 炒面 class FriedNoodles extends FastFood { public FriedNoodles() { super(12, "炒面"); } @Override public float cost() { return getPrice(); } } // 配料 abstract class Garnish extends FastFood { private FastFood fastFood; public FastFood getFastFood() { return fastFood; } public void setFastFood(FastFood fastFood) { this.fastFood = fastFood; } public Garnish(FastFood fastFood, float price, String desc) { super(price, desc); this.fastFood = fastFood; } } // 雞蛋配料 class Egg extends Garnish { public Egg(FastFood fastFood) { super(fastFood, 1, "雞蛋"); } @Override public float cost() { return getPrice() + getFastFood().getPrice(); } @Override public String getDesc() { return super.getDesc() + getFastFood().getDesc(); } } //培根配料 class Bacon extends Garnish { public Bacon(FastFood fastFood) { super(fastFood,2,"培根"); } @Override public float cost() { return getPrice() + getFastFood().getPrice(); } @Override public String getDesc() { return super.getDesc() + getFastFood().getDesc(); } }
看完上述內(nèi)容,你們掌握如何在java中使用裝飾者模式的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁名稱:如何在java中使用裝飾者模式
分享地址:http://aaarwkj.com/article6/ijhjog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、做網(wǎng)站、網(wǎng)站建設(shè)、App開發(fā)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)