相關閱讀 |
>>> 小樂的精彩夢想 >>> | 簡體 傳統 |
單一職責原則:就一個類而言,應該只專注于做一件事和僅有一個引起變化的原因。
開放封閉原則:軟件實體(類、模塊以及功能等)對擴展是開放的,對修改是封閉的。
Liskov替換原則:子類型能夠完全替換父類型,而不會讓調用父類型的客戶程序從行為上有任何改變。
依賴倒置原則:高層模塊不應該依賴于低層模塊,二者都應該依賴于抽象。
接口隔離原則:使用多個專門的接口比使用單一的總接口要好。
與設計師的心靈對話,就從這一段段美妙的代碼開始……
Craig Larman:當你花費了數年應用那些大量的設計模式后,你會越來越體會到本質主題的重要性,而極為細節化的……任何模式都將變得次要。
Michael C.Feathers在《修改代碼的藝術》一書中提到:在一個裝飾類套一個裝飾類的代碼中“行走”,就好像在一層一層地剝洋蔥皮,剝洋蔥皮固然是必要的工作,但弄不好會讓你嗆出眼淚來。
軟件和教堂非常相似——建成之后我們就在祈禱。
面向對象三大機制:
封裝,隱藏內部實現
繼承,復用現有代碼
多態,改寫對象行爲
設計原則:優先使用組合而非繼承,封裝變化點
單一職責、開放封閉、裡氏替換、依賴倒置、接口隔離
創建型
1 Singleton 單件
保證一個類僅有一個實例,並提供一個該實例的全局訪問點。
2 Abstract Factory 抽象工廠
提供一個接口,讓該接口負責創建一系列“相關或者相互依賴的對象”,無需指定它們具體的類。
3 Builder 生成器
將一個復雜對象的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。
4 Factory Method 工廠方法
定義一個用於創建對象的接口,讓子類決定實例化哪一個類,使得一個類的實例化延遲到子類。
5 Prototype 原型
使用原型實例指定創建對象的種類,然後通過拷貝這些原型來創建新的對象。
結構型
6 Adapter 適配器
將一個類的接口轉換成客戶希望的另一個接口,使得原本由於接口不兼容而不能一起工作的那些類可以一起工廠。
7 Bridge 橋接
將抽象部分與實現部分分離,使它們都可以獨立地變化。
8 Composite 組合
將對象組合成樹型結構以表示“部分-整體”的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。
9 Decorator 裝飾
動態地給一個對象增加一些額外的職責,就增加功能而言,比生成子類更爲靈活。
10 Facade 外觀
爲子系統中的一組接口提供一個一致的界面,定義一個高層接口,這個接口使得這一子系統更加容易使用。
11 Flyweight 享元
通過共享技術有效地支持大量細粒度的對象。
12 Proxy 代理
爲其他對象提供一種代理以控制對這個對象的訪問。
行爲型
13 Template Method 模板
定義一個操作中的算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
14 Command 命令
將一個請求封裝爲一個對象,從而使你可用不同的請求對客戶(客戶程序,也是行爲的請求者)進行參數化,對請求排隊或記錄請求日志,以及支持可撤銷的操作。
15 Interpreter 解釋器
給定一個語言,定義它的文法的一種表示,並定義一種解釋器,這個解釋器使用該表示來解釋語言中的句子。
16 Mediator 中介者
用一個中介對象來封裝一系列的對象交互,使各對象不需要顯式的相互引用,從而使其耦合松散,且可以獨立地改變它們之間的交互。
17 Iterator 迭代器
提供一種方法順序訪問一個聚合對象中的各個元素,而又不暴露該對象的內部表示。
18 Observer 觀察者
定義對象間的一種一對多的依賴關係,以便當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並自動更新。
19 Chain Of Responsibility 職責鏈
使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係,將這些對象連成一條鏈,並沿著這條鏈傳遞請求,直到有一個對象處理它爲止。
20 Memento 備忘錄
在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態(如果沒有這個關鍵點,其實深拷貝就可以解決問題)。這樣以後就可以將該對象恢復到原先保存的狀態。
21 State 狀態
允許一個對象在其內部狀態改變時改變它的行爲,從而使對象看起來似乎修改了其行爲。
22 Strategy 策略
定義一系列算法,把它們一個個封裝起來,並且使它們可互相替換,使得算法可獨立於使用它的客戶而變化。
23 Visitor 訪問者
表示一個作用於某對象結構中的各個元素的操作,可以在不改變各元素的類的前提下定義作用於這些元素的新的操作。
2022-12-15 13:52:41
稱謂:
内容: