本週接著介紹詳細的具體的設計模式,包括工廠方法、抽象工廠模式、原型模式、構建器、門面模式、**模式、介面卡和中介者。
一、工廠方法
1.應用情景
在軟體系統中,經常面臨著物件建立的工作;由於需求的變化,需要建立的物件的具體型別經常發生變化。
2.解決方案
在軟體中,可以通過將new封裝到工廠類的create函式中,並且將工廠類抽象出乙個基類,實現new的多型性。這樣可以保證物件構建函式的復用,實現將變化集中的目的。
其結構如下圖所示:
二、抽象工廠模式
1.應用情景
需要進行一系列的相互關聯的建立活動時。
2.解決方案
將這一系列的建立活動放置到乙個工廠類中,簡化系統中類的個數。
三、原型模式
1.應用情景
在軟體系統中,經常面臨著「某些結構複雜的物件」的建立工作;由於需求的變化,這些物件經常面臨著劇烈的變化,但是它們卻擁有比較穩定一致的介面。
2.解決方案
在需要使用物件的地方,傳入乙個配置好的原型物件,在需要使用時深拷貝該物件,獲取所需的物件。
其結構圖如下圖所示:
四、構建器
1.應用情景
在軟體系統中,存在乙個複雜物件的建立工作,其建立的流程是固定的,但是其建立的子步驟經常發生改變。
2.解決方案
與模板方法類似,將建立流程在基類中實現,子過程作為protected的虛函式,在子類中再實現。實現時需要注意不同語言在構建物件時呼叫虛函式的區別。
五、門面模式
1.應用情景
元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各個系統的演化,這種過多的耦合面臨很多變化的挑戰。
2.解決方案
將所有的耦合關係使用乙個統一的類來管理,即給乙個子系統設計乙個類做外部的門面,實現高內聚低耦合。
六、**模式
1.應用情景
在物件導向系統中,有些物件由於某種原因,直接訪問會給使用者、或者系統結構帶來很多麻煩。
2.解決方案
增加乙個間接層來解決這些麻煩,保證客戶程式呼叫的透明性。
七、介面卡
1.應用情景
將現存物件放到新的環境中使用,但是介面不匹配時。
2.解決方案
增加乙個間接類將舊的介面轉換為新的介面。
八、中介者
1.應用情景
在系統內部,物件之間相互維護了非常複雜的引用關係時。
2.解決方案
使用乙個中介者類,將所有相關的物件引用集中管理,實現系統內物件之間的相互聯絡的解耦。
博覽網 設計模式 第一周課程筆記
本週課程先大致介紹了設計模式的概念以及產生原因,然後詳細講解了設計模式的幾大原則,接著按照順序介紹了模板方法 策略模式 觀察者模式 裝飾模式 橋模式這幾個設計模式。課程目標 理解松耦合設計思想 掌握物件導向設計原則 掌握重構技法改善設計 掌握gof核心設計模式 一 程式開發的兩種思維 1.底層思維 ...
博覽網 C 標準庫 第四周課程筆記
第四周的課程繼續介紹標準庫的內容,本週主要介紹了stl中的演算法和介面卡。詳細講解了迭代器中的traits如何幫助演算法獲得更高的效能,也介紹了介面卡如何通過改造其適配物件,使適配物件取得所需的特殊行為。這一部分的內容比較複雜,重點放在演算法和介面卡的使用上,而不是構造上。一 演算法與迭代器 1.演...
第二週課程管理實踐總結
網路131班 201336615143 容永豪 管理概論 鏈結 第三講管理者及其素質 一.管理者及其職責 正因為組織的績效受到眾多的因素影響,因此需要有人帶領組織的人來克服環境的不確定因素 這個人或者這群人就是 管理者 管理者就是對組織負責,對組織績效負責的人 二.管理者的地位分類 高層管理者 對組...