您好,登錄后才能下訂單哦!
本篇內容介紹了“java裝飾者模式如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
1、使用說明
(1)裝飾者模式可以帶來比繼承更加靈活的擴展功能,使用更加方法,可以通過組合不同的裝飾者對象來獲取具有不同行為狀態的多樣化的結果。裝飾者模式比繼承更具良好的擴展性,完美的遵循開閉原則,繼承是靜態的附加責任,裝飾者則是動態的附加責任。
(2)裝飾類和被裝飾類可以獨立發展,不會相互耦合,裝飾模式是繼承的一個替代模式,裝飾模式可以動態擴展一個實現類的功能。
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裝飾者模式如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。