裝飾模式(decorator)
動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。
首先有那麼乙個裸睡的人,早上起來準備穿衣服了,如下,show方法顯示他穿衣服的步驟
package com.wxl.design.decorator;
/** * 個人
*/public abstract class person
為了更好的穿衣服,搞了乙個穿衣服器(裝飾器)
package com.wxl.design.decorator;
/** * 裝飾器
*/public class costume extends person
}public void setcostume(costume costume)
}
裝飾器覆蓋show方法但是卻不掉用自身而是呼叫被裝飾物件的show方法,接下來就可以開始穿了
package com.wxl.design.decorator;
public class costumea extends costume
/*** 獨特的方法
*/private void wearsuit()
}
他先穿內衣褲,然後穿襪子
package com.wxl.design.decorator;
public class costumeb extends costume
/*** 獨特的方法
*/private void wearequipment()
}
最後
package com.wxl.design.decorator;
public class main
}
執行結果:
小明今天穿了:
西服西褲
雨傘袋子
設計模式 裝飾者模式 1
一 用headfirst 設計模式 咖啡例子 1.裝飾者模式 1.動態地將責任附加到物件上 1.1 以飲料為主體,然後在執行時以調料來 裝飾 飲料 2.裝飾者與被裝飾者間必須要有共同超類 2.1 並非用繼承獲得行為,而是組合物件而來,並且由執行時決定 3.通常裝飾者模式採用抽象類 4.利用例項變數 ...
android 拋棄Mvc ,初嚐 Mvp 模式
前言 最近專案開始用mvp模式進行開發,為什麼不用mvc?你懂得。經過幾個版本迭代,邏輯已經被巢狀的面目全非,無法下手。下面簡單介紹,畢竟網上已有好多分享!隨著ui建立技術的功能日益增強,ui層也履行著越來越多的職責。為了更好地細分 檢視 view 與模型 model 的功能,讓view專注於處理資...
研磨設計模式之裝飾模式 1
考慮這樣乙個實際應用 就是如何實現靈活的獎金計算。獎金計算是相對複雜的功能,尤其是對於業務部門的獎金計算方式,是非常複雜的,除了業務功能複雜外,另外乙個麻煩之處是計算方式還經常需要變動,因為業務部門經常通過調整獎金的計算方式來激勵士氣。先從業務上看看現有的獎金計算方式的複雜性 看了上面獎金計算的問題...