原创 23種設計模式 VOL.14: 命令模式

思想: 具體指令與對應執行動作綁定, 調用方(發號施令)通過命令接口的execute()激活動作行爲, 使任務的調用方和執行方完全解耦, 且支持撤銷功能; 角色  Invoke: 調用者(發號施令) Command: 抽象的命令 Con

原创 23種設計模式 VOL.5: 建造者模式

思想: 抽象類制定建造流程, 實現類實現建造流程, 再由指揮者根據建造流程/改變建造流程順序得到產品; 注意: 建造者模式不適用於建造流程差別過大的產品; 建造者四個角色 Product 產品(房子) Builder 抽象建造者(制定產

原创 23種設計模式 VOL.8: 裝飾者模式

思想: 動態的將屬性附加到對象上, 比繼承更方便;  裝飾者的4個角色 抽象主體(AbsDrink)Component; 被裝飾者(咖啡)ConcreteComponent具體組件; 裝飾者Decorator; 具體裝飾者(配料)

原创 23種設計模式 VOL.13: 模板模式

思想: 在抽象類中定義一個公開的模版方法(執行流程骨架), 具體的執行細節交給它的子類來實現, 子類可用鉤子方法控制模版方法中某些步驟的執行流程; 豆漿製作流程 黃豆 -> 添加其他豆類 ->浸泡 -> 豆漿機打磨; 黃豆, 浸泡, 打

原创 23種設計模式 VOL.2: 工廠模式

思想: 調用方無需關心具體的實現細節, 實現的細節在工廠裏處理, 調用者要什麼工廠裏有就返回什麼; 由各地區訂購披薩案例, 引出工廠模式的思考: 案例模型            產生的問題: 增加新品披薩後每個訂購區域得重新依賴新品種

原创 23種設計模式 VOL.23: 責任鏈模式

思想: 接收者收到一個請求後交給處理器對象來處理, 每個處理器內置依賴下個處理器的引用, 當前處理器完成不了的事就交給下個處理器, 形成鏈式處理器(責任鏈); 責任鏈UML 角色說明 AbsHandler: 處理器抽象類和接收者, 內

原创 23種設計模式(Java案例)

                                                   前言                                                             設計模

原创 23種設計模式 VOL.19: 備忘錄模式

思想: 備忘錄對象用來記錄源數據對象的某種狀態/數據, 方便後期從備忘錄中取出源數據狀態後對源數據執行回退操作; 備忘錄UML 角色說明 Originator: 源數據對象; Memento: 備忘錄對象; Caretaker: 備忘

原创 23種設計模式 VOL.3: 抽象工廠模式

思想:  簡單工廠 + 工廠方法 = 抽象工廠, 抽象工廠同工廠方法都是對簡單工廠進行抽象化, 不同在於工廠方法注重怎麼從簡單工廠中獲取對象, 抽象工廠注重用哪個簡單工廠(下面的工廠簇)再從簡單工廠中怎麼去獲取對象; 繼續用訂購披薩的案

原创 23種設計模式 VOL.9: 組合模式/部分整體模式

思想: 將低級對象組合進高級對象, 再由高級對象統一調用(高級對象管理組合進來的低級對象); 適用場景 業務有樹形結構; 未用組合模式操作學校、學院、院系 只能聲明對象後再一個個對象的調用; 用組合模式操作學校、學院、院系 代

原创 23種設計模式 VOL.22: 策略模式

思想: 將某個行爲抽離成行爲策略接口, 其實現類表示此行爲有多種策略方式; 鴨子案例 野鴨, 飼養鴨, 玩具鴨; 每個品種的鴨子對游泳這個行爲有不同的表現; 野鴨游泳很厲害, 飼養鴨游泳一般, 玩具鴨不能自己游泳; 未使用策略模式

原创 23種設計模式 VOL.10: 外觀模式

思想: 客戶端不再關注每個對象之間的調用關係, 這個工作交給外觀代理類完成, 客戶端依賴外觀代理類(符合迪米特法則); 角色 Facade: 外觀代理類; 家庭影院案例 未使用外觀模式 ​​​​​​​ 對外部調用方而言往後不便於擴

原创 23種設計模式 VOL.4: 原型模式

思想: 動態的拷貝原對象運行時的屬性, 原對象在運行時對屬性進行了修改後複製最新的屬性值到新對象(孫悟空-> 拔猴毛克隆多個猴子) 淺拷貝和深拷貝 淺拷貝: 克隆原型對象裏的引用數據類型屬性時, 克隆後的對象裏引用數據類型屬性是直接將指

原创 23種設計模式 VOL.12: 代理模式

思想: 通過代理對象來創建目標對象, 間接的可對目標對象進行前置或後置處理(即擴展了目標對象);  代理對象調用目標對象的接口實現對目標對象的調用 角色 靜態代理 定義抽象類, 代理類和目標類均實現此抽象類的方法, 客戶端調用代理類中的

原创 23種設計模式 VOL.18: 中介者模式

思想: 所有同事類交給中介者來管理, 同事類之間不再關聯, 同事類之間實現解耦, 客戶端直接聯繫中介人; 同事類: 程序員找房東租房子-> 房東租房子要經過家人同意後纔會將房源租出去, 房東和房東家人屬於同事類; 未使用中介者模式 中