SEPT 9
設計模式creational patterns社會化的分工越來越細,自然在軟件設計方面也是如此,因
設計模式
creational patterns
社會化的分工越來越細,自然在軟件設計方面也是如此,因此對象的創建和對象的使用分開也就成為了必然趨勢。因為對象的創建會消耗掉系統的很多資源,所以單獨對對象的創建進行研究,從而能夠高效地創建對象就是創建型模式要探討的問題。
(1)singleton
(2)abstract factory
singleton單例模式:一個類只有一個實例。調用這個類里的方法全用這一個實例。
優缺點:https://blog.csdn.net/tayanxunhua/article/details/8250329
abstract factory抽象工廠模式:一個抽象工廠類,派生出多個具體工廠類。
抽象工廠模式 | 菜鳥教程
? It helps to isolate concrete classes. Client manipulate instances through their abstract interfaces. ? It makes exchanging product families easy – as the concrete factory appears only once in an application. ? It promotes consistency among products – product objects in a family are designed to work together.
總結:創造性模式使得實例化過程抽象化,使得客戶端和創建,組成,表示對象分離。使得創建者,創建方式,創建時間非常靈活。
structural patterns
在解決了對象的創建問題之后,對象的組成以及對象之間的依賴關系就成了開發人員關注的焦點,因為如何設計對象的結構、繼承和依賴關系會影響到后續程序的維護性、代碼的健壯性、耦合性等。
(1)facade
(2)composite
facade(門面模式):通過一個接口來封裝復雜邏輯代碼。用戶只用從這一個接口里調用方法。使客戶代碼和復雜邏輯代碼分離,降低耦合。
設計模式分類(創建型模式、結構型模式、行為模式) - 姜絲的博客 - CSDN博客減少客戶所要處理的對象。子系統改變不會影響客戶端。門面系統不會阻止客戶使用復雜邏輯代碼如果客戶想的話。
composite(組合模式):
以下情況下適用Composite模式:
1.你想表示對象的部分-整體層次結構
2.你希望用戶忽略組合對象與單個對象的不同,用戶將統一地使用組合結構中的所有對象。
意圖:將對象組合成樹形結構以表示"部分-整體"的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。
主要解決:它在我們樹型結構的問題中,模糊了簡單元素和復雜元素的概念,客戶程序可以像處理簡單元素一樣來處理復雜元素,從而使得客戶程序與復雜元素的內部結構解耦。
behavioural pattern
(1)observer
(2)iterator
(3)visitor
observer(觀察者模式):
意圖:定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。
主要解決:一個對象狀態改變給其他對象通知的問題,而且要考慮到易用和低耦合,保證高度的協作。
iterator(迭代器模式):
意圖:提供一種方法順序訪問一個聚合對象中各個元素, 而又無須暴露該對象的內部表示。
主要解決:不同的方式來遍歷整個整合對象。
visitor(訪問者模式):
意圖:主要將數據結構與數據操作分離。
主要解決:穩定的數據結構和易變的操作耦合問題。
何時使用:需要對一個對象結構中的對象進行很多不同的并且不相關的操作,而需要避免讓這些操作"污染"這些對象的類,使用訪問者模式將這些封裝到類中。
如何解決:在被訪問的類里面加一個對外提供接待訪問者的接口。
關鍵代碼:在數據基礎類里面有一個方法接受訪問者,將自身引用傳入訪問者。
上一篇:喜托里克9









