設計模式筆記(無圖)
繼承與組合
應盡量把相同的特性提取到超類泳秀,把各自的特性抽象成接口。
具體實現(xiàn)可以使用組合朱沃。
如果不能確定的話就多用組合苞轿,少用繼承。
觀察者模式
1逗物、Observer(觀察者)注冊成為Obserble(被觀察者)的通知對象
2搬卒、Obserble有變化就會通知觀察者
3、Observer取消注冊翎卓,Obserble不通知該Observer
裝飾者模式
難題:飲料可以加各種各樣的小料契邀,最終怎么結(jié)算錢?
層層嵌套失暴,最終的本質(zhì)不變坯门,只是添加了各種新的特性。注意和組合區(qū)分逗扒,組合是將多特性組合起來古戴。
使用時注意具體場景,使用不同的設計模式矩肩。
工廠模式
委托代理生產(chǎn)對象
單例模式
供全局調(diào)用的唯一對象现恼。
命令模式
用于封裝方法,可以實現(xiàn)復雜操作黍檩。
一個命令接口被多個不同實例實現(xiàn)自己的方法叉袍。
適配器模式
接口轉(zhuǎn)換。
例如:電源適配器建炫。將電源的220V轉(zhuǎn)換為5V畦韭。
三孔轉(zhuǎn)二孔等等疼蛾。
三個角色:調(diào)用方肛跌,適配器,被適配者察郁。
調(diào)用發(fā)無法直接調(diào)用被適配者衍慎,通過適配器來調(diào)用到適配者。
模板方法
模板方法在一個方法中定義一個算法的骨架皮钠,而將實際的操作延遲到子類中稳捆。
例如:泡茶喝泡咖啡步驟一致,使用一個泡飲料的模板方法麦轰,各自實現(xiàn)具體的步驟乔夯。
Java中的Compare砖织,利用子類實現(xiàn)的Compare來排序
迭代器和組合模式
迭代器模式提供一個方法順序的訪問一個聚合對象的各個元素,不暴露其內(nèi)部的表示末荐。
組合模式的含義就是將不同的數(shù)據(jù)組合起來侧纯。只返回一個迭代器。
例子:餐廳合并之后多個菜單合并成一個組合菜單甲脏。
狀態(tài)模式
狀態(tài)模式允許內(nèi)部狀態(tài)改變時眶熬,改變它的行為。
代理模式
代理和裝飾:裝飾可以增加行為块请,代理用來控制代理對象行為娜氏。
復合模式
設計模式組合使用。
其他
橋接墩新,生成器(Builder)贸弥,責任鏈,蠅量模式(一份對象通過數(shù)量表示多個對象)海渊,
解釋器茂腥,中介者,備忘錄(返回之前的狀態(tài))切省,原型模式最岗,訪問者模式,
設計模式是某情景下針對某個問題的某種解決方案朝捆。