什麼是設計模式?通常會有以下幾個定義:
設計模式描述了軟體設計過程中某一類常見問題的一般性解決方案。
物件導向設計模式描述了物件導向設計過程中,特定場景下,類與相互通訊的物件之間常見的組織關係。
每乙個模式描述了乙個在我們周圍不斷重**生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次的使用該方案而不必重複勞動。
說到設計模式,首先必須提到的就是gof,2023年,erich gamma, richard helm, ralph johnson和john vlissides(合稱gang of four, gof)合作出版了一本書《design patterns: elements of reusable object-oriented software》。這本書首次把設計模式提公升到了乙個理論的高度。後面陸續又有大師出版了一系列談論設計模式的書,使用不同語言、從不同角度對設計模式進行了進一步的闡述。其中,影響比較大的還有robert c. martin的《agile software development: principles patterns and practices》和james w. cooper的introduction to desgin patterns in c#》。也許,還可以加上一本最新的《head first designpatterns》。
我曾經聽到專案組的同事抱怨前面提到的書太晦澀了,遷怒於翻譯的水平,說除了**之外,基本上不知所云。國內翻譯的it教材,確實有很多翻譯的不知所云,但是關於設計模式,卻顯然不是這樣。在我看來,設計模式不是可以「學習」的。它不是一種語法,而更是一些思想,一些經驗總結。試想,總結出這些模式的那些大師,是做了無數的專案慢慢積累,才濃縮出這些精華。要真的理解這些精華,也必須有一定的經驗積累才行。乙個只了解一兩種oo語言語法的程式設計師,是沒法真正理解設計模式的。不過,剛開始oo,也不是不可以看看設計模式。也許一時半刻還不能理解,更不會應用到實際專案中去,不過,能在頭腦裡有些概念,在遇到這些設計模式所提到的問題的場景時,能想起來翻翻書,就很不錯了。
gof提到了23種設計模式,而在cooper的書中,又加入了一種最簡單的建立型模式簡單工廠****** factory,可以看作是工廠模式的簡化。不管是23種還是24種,大家的分類方法都是一致的,都根據設計模式應用的場景,分為三大類:
1. 建立型模式
與類的建立有關的模式,討論的是如何建立物件不是直接例項化物件,這會使程式在判斷給定情況下建立哪乙個物件。這樣的模式包括:
單件模式(single pattern)
抽象工廠模式(abstract factory)
建造者模式(builder pattern)
工廠方法(factory method)
簡單工廠模式(****** factory)
原型模式(protype pattern)
2. 結構型模式
處理類和物件的組合。結構型模式可以將一組物件組合成更大的結構,例如複雜的使用者介面或報表資料。這些模式包括:
介面卡模式(adapter pattern)
橋接模式(bridge pattern)
裝飾模式(decorator pattern)
組合模式(composite pattern)
外觀模式(façade pattern)
享元模式(flyweight pattern)
**模式(proxy pattern)
3.行為型模式
對類和物件怎樣互動和分配職責進行描述。行為型模式定義系統內物件間的通訊,以及複雜程式中的流程控制。這些模式包括:
模版方法模式(template method)
命令模式(command pattern)
迭代器模式(iterator pattern)
觀察者模式(oberver pattern)new!
中介者模式(mediator pattern)
備忘錄模式(memento pattern)
直譯器模式(interpreter pattern)
狀態模式(state pattern)
策略模式(strategy pattern)
職責鏈模式(chain of responsibility)
訪問者模式(visitor pattern)
我力圖完成這些模式的記錄,這個工程可不小。我的記錄主要以例子為主,包括**和類圖。也適當摘抄一些上面提到的前輩的文字描述。這樣整理下來,我也就又有提高了^_^
設計模式 概述
第一章 簡單工廠模式 1.物件導向的好處 通過封裝 繼承 多型把程式的耦合度降低。用設計模式使得程式更加的靈活,容易修改,並且易於復用。簡單工廠模式 到底要例項化誰,將來會不會增加例項化的物件,比如增加開根運算,這是很容易變化的地方,應該考慮用乙個單獨的類來做這個創造例項的過程,這就是工廠。類圖 類...
設計模式概述
面試的時候,考察設計模式,就像是 天王蓋地虎,寶塔鎮河妖 一樣的黑話。在道上混,雖然不知道會碰到什麼鬼神,知道內涵意義的同時,也需要知道這些形式上的東西到底是怎麼一一表述的。不然,咋死的都不知道 設計模式的實現 設計模式的目的 對一些常用的設計模式套用上面的描述結構 實現 目的 實現 目的 實現 目...
設計模式概述
一 軟體設計遵循的基本原則 1 高內聚,低耦合 乙個軟體系統要有乙個穩定的架構,不會隨需求的改變而發生巨大的變動。因此,高內聚 低耦合是乙個軟體系統設計中必須遵循的基本原則。2 面向抽象程式設計 在面向過程的軟體開發中,上層元件呼叫下層元件,就意味著上層元件依賴於下層元件,當下層元件發生劇烈變化時,...