今天來學習一下裝飾模式。裝飾模式的主要作用就是用來擴充套件乙個類的功能,在不改變原來的情況下給它加上新的附屬。
廢話呢也懶得說了,因為太懶了。
場景設定:上海老婆成本計算及描述,成本包括,車、房子、穩定的工作、錢。
**:public abstract inte***ce payforwifeinte***ce
//有個房子吧,上海郊區的500w
public class roomcost implements payforwifeinte***ce
@override
public string costdetail() }
//車子一台20w
public class carcost implements payforwifeinte***ce
@override
public string costdetail() }
//穩定的工作,估價500w
public class goodjob implements payforwifeinte***ce
@override
public string costdetail() }
//得有錢啊,沒錢誰嫁你,1000w資產
public class moneycost implements payforwifeinte***ce
@override
public string costdetail() }
想要多少個附加的條件都可以的,要多少就寫多少個類去實現介面。
再寫乙個裝飾介面:
//裝飾介面
public inte***ce zhangshiinte***ce extends payforwifeinte***ce
//房子裝飾實現裝飾介面
public class roomzs implements zhangshiinte***ce
@override
public double costsum()
@override
public string costdetail() }
//車子裝飾
public class carzs implements zhangshiinte***ce
@override
public double costsum()
@override
public string costdetail() }
//工作裝飾
public class goodjobzs implements zhangshiinte***ce
@override
public double costsum()
@override
public string costdetail() }
//錢裝飾
public class moneyzs implements zhangshiinte***ce
@override
public double costsum()
@override
public string costdetail() }
寫到這裡基本上裝飾模式就算完成了,總結寫法,
1寫乙個介面,介面裡寫上能用到的方法,
2寫要附加的裝飾,繼承介面
3寫裝飾介面實現1的介面
4,所有裝飾類實現3的介面,並在該類裡構造方法,傳1的介面
5,呼叫
//結婚成本,乙個好工作,一台車子,一套房子,還有老婆本(錢 )
payforwifeinte***ce payforwifeinte***ce = new goodjobzs(new carzs(new roomzs(new moneycost())));
double costsum = payforwifeinte***ce.costsum();
system.out.println("上海結婚花費:"+costsum+"w");
string costdetail = payforwifeinte***ce.costdetail();
system.out.println(costdetail);
輸出:上海結婚花費:3520.0w
現金資產1000萬+房子一套+一台車子+穩定的工作
看到這還想結婚嗎,如果不想請支援一下吧。
設計模式 裝飾模式
裝飾模式,動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。m 超級瑪麗 普通繼承模式實現 a 發鏢 能組合出七種功能 m1 a m4 a b b 變身 m2 b m5 a c c 無敵 m3 c m6 b c m7 a b m m1 a b 組合方法 new m2 m...
設計模式 裝飾模式
剛看了看設計模式,真是費了好多的腦細胞。想著想著就到了食堂。o o哈!正是長身體的時候 大神勿噴 一定要多吃點。於是我打了乙份公尺飯,然後又端著盛公尺飯的盤子買了乙份菜 看著還不是很夠,就又端著這個盤子買了一條最愛吃的魚。裝飾模式!五一要來了。回家轉轉,沒有小外甥的玩具怎麼行。於是我去超市,推著購物...
設計模式 裝飾模式
複習設計模式 裝飾模式 裝飾模式 在不修改已經存在的類的情況下,動態的新增新的功能,實現即插即用,開放關閉原則 public inte ce man public class batman implements man override public void killmonster public ...