咖啡館訂單系統專案的乙個下單需求,一種咖啡可以和任意一種或多種調料搭配(牛奶,摩卡);
//相當於component
//上面我們提到的主體 也是被裝飾者
public abstract class xingbake
public void setdescription(string description)
public abstract double cost();//計算咖啡的**
}
package com.ghl.demo;
//混合咖啡類 相當於concretecomponent
public class houseblend extends xingbake
@override
public double cost()
}
package com.ghl.demo;
//調料裝飾者類 相當於decorator
public abstract class condimentdecorator extends xingbake
package com.ghl.demo;
//相當於concretedecorator
public class milk extends condimentdecorator
@override
public string getdescription()
@override
public double cost()
}
package com.ghl.demo;
//相當於concretedecorator
public class mocha extends condimentdecorator
@override
public string getdescription()
@override
public double cost()
}
package com.ghl.demo;
public class testdemo
}
會引入大量的類,沒新增或擴充套件乙個功能都會新憎乙個類。 設計模式 裝飾著模式
裝飾者模式的應用場景覆蓋,擴充套件,is a,前置,寫法 裝飾者模式 decorator pattern 是指在不改變原有物件的基礎之上,將功能附加到物件上,提供了比繼承更有彈性的替代方案 擴充套件原有物件的功能 裝飾者在 程式中適用於以下場景 1 用於擴充套件乙個類的功能或給乙個類新增附加職責。2...
設計模式之裝飾著模式
今天學習了裝飾著模式,寫在這裡防止忘掉。裝飾著模式自己理解就是給類新增職責,新增新的功能。比如下面的 date 2017 7 1 author hsj description public class demo3 inte ce coder class codestudent implements ...
裝飾著模式
package com.henu.decorator 漢堡基類 author rock public abstract class humburger public abstract double getprice package com.henu.decorator 雞腿堡類 被裝飾者的初始狀態,...