設(shè)計模式筆記
# 設(shè)計模式筆記:
? ?創(chuàng)建型分三步:選擇不同的工廠,工廠可以選擇不同的方法,每個方法可以選擇不同的入?yún)?br> ? ?!簡單工廠就是一個工廠多個方法(或一個方法,再由入?yún)⑴袛啵浚?br> ? ?!工廠方法就是多個工廠一個方法(入?yún)⒉辉儆脕韰^(qū)分生產(chǎn)哪個商品?)
? ?!抽象工廠就是多個工廠多個方法(或一個方法,再由入?yún)⑴袛???br> ? ?!單例:設(shè)成類成員!
? ???!建造者:內(nèi)部類弄個Builder,最后build()
? ???!原型:預(yù)先生成若干對象,需要時復(fù)制屬性(可自定義個性化)得到新對象
? ??。∠碓好看问褂脤ο蠖荚诔乩锢锬?,沒有的就創(chuàng)建新的放進池里(類似Java的字符串池)
? ?結(jié)構(gòu)型:
? ?!橋接:抽象類A的成員屬性中有抽象類B的對象,則A與B可以分別進行擴展
? ?!代理:A的成員屬性中有類B的對象,A與B實現(xiàn)相同接口,外部調(diào)用時由調(diào)用B對象方法變成調(diào)用A對象方法,A對象內(nèi)部在調(diào)用B對象方法前后實現(xiàn)加強
? ?!適配器:外部調(diào)用接口不改,實現(xiàn)類B實現(xiàn)接口不改,適配方法是增加中間類A,A含有B類對象作為成員,且實現(xiàn)了外部接口的方法調(diào)用B的接口方法
? ???!裝飾模式:與代理差不多
? ?!!責任鏈模式:消費者拋出一個請求給鏈表表頭,鏈中對象依次判斷是否由自己處理,是則處理,否則傳給下一項
? ??。¢T面模式:消費者調(diào)用簡單的接口訪問復(fù)雜的內(nèi)部系統(tǒng)(與模板方法差不多)
? ??。〗M合模式:就是樹中每個結(jié)點的形式,你返回根結(jié)點就相當于返回了一棵樹
? ?行為型:
? ?!中介者:通訊雙方中間加轉(zhuǎn)發(fā)者
? ?!觀察者:所有觀察者實例注冊到客戶端列表,客戶端有改變時就會調(diào)用每個注冊了的觀察者回調(diào)方法
? ???!命令模式:就是把命令抽出來作為一個類而不是放在主體類(例如老師類)方法直接實現(xiàn)
? ?!!狀態(tài)模式:就是把狀態(tài)抽出來作為一個類而不是放在主體類(例如天氣類)方法直接實現(xiàn)
? ??。〔呗阅J剑壕褪前巡呗猿槌鰜碜鳛橐粋€類而不是放在主體類(例如學(xué)習(xí)類)方法直接實現(xiàn)
? ???!解析器模式:就是把解析器抽象出來作為一個類而不是放在主體類(例如英語類)方法直接實現(xiàn)
? ???!備忘錄模式:就是把備忘錄抽象出來作為一個類而不是放在主體類(例如游戲存檔類)方法直接實現(xiàn)
? ???!模板方法:就是把模板抽出來作為一個方法而不是直接寫在一起,層次清晰方便業(yè)務(wù)與技術(shù)對接(與門面模式差不多)
? ??。〉J剑壕褪堑?,可以讓所有容器統(tǒng)一遍歷的接口