如何在java中使用裝飾者模式

如何在java中使用裝飾者模式?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網技術服務公司,擁有項目網站設計制作、網站設計網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元錫林郭勒盟做網站,已為上家服務,為錫林郭勒盟各地企業(yè)和個人服務,聯(lián)系電話:13518219792

Java可以用來干什么

Java主要應用于:1. web開發(fā);2. Android開發(fā);3. 客戶端開發(fā);4. 網頁開發(fā);5. 企業(yè)級應用開發(fā);6. Java大數(shù)據(jù)開發(fā);7.游戲開發(fā)等。

1、使用說明

(1)裝飾者模式可以帶來比繼承更加靈活的擴展功能,使用更加方法,可以通過組合不同的裝飾者對象來獲取具有不同行為狀態(tài)的多樣化的結果。裝飾者模式比繼承更具良好的擴展性,完美的遵循開閉原則,繼承是靜態(tài)的附加責任,裝飾者則是動態(tài)的附加責任。

(2)裝飾類和被裝飾類可以獨立發(fā)展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態(tài)擴展一個實現(xiàn)類的功能。

2、實例

public class HelloWorld {
    public static void main(String[] args) {
        //點一份炒飯
        FastFood food = new FriedRice();
        //花費的價格
        System.out.println(food.getDesc() + " " + food.cost() + "元");
 
        System.out.println("========");
 
        //點一份加雞蛋的炒飯
        FastFood food1 = new FriedRice();
        food1 = new Egg(food1);
        //花費的價格
        System.out.println(food1.getDesc() + " " + food1.cost() + "元");
 
        System.out.println("========");
 
        //點一份加培根的炒面
        FastFood food2 = new FriedNoodles();
        food2 = new Bacon(food2);
        //花費的價格
        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;
    }
 
    // 獲取價格
    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();
    }
}

看完上述內容,你們掌握如何在java中使用裝飾者模式的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網頁名稱:如何在java中使用裝飾者模式
分享地址:http://bm7419.com/article6/ijhjog.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網站建設、靜態(tài)網站、做網站網站建設、App開發(fā)、企業(yè)建站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網站優(yōu)化