設(shè)計(jì)模式從何而來
軟件工程技術(shù)的模式早敬,起源于建筑領(lǐng)域。模式之父 Christopher Alexander 及其團(tuán)隊(duì)花費(fèi)約20年的時(shí)間婚夫,通過對住宅以及周邊環(huán)境進(jìn)行大量調(diào)查研究和資料收集工作之后發(fā)現(xiàn)人們對舒適住宅和城市環(huán)境存在一些共同的認(rèn)同規(guī)律激才。在Christopher Alexander的經(jīng)典著作《建筑的永恒之道》中鳍贾,給出了關(guān)于模式的定義:每個(gè)模式都描述了一個(gè)在我們的環(huán)境中不斷出現(xiàn)的問題梦抢,然后描述了該問題的解決方案的核心般贼,通過這種方式,我們可以無數(shù)次地重用那些已有的成功的解決方案奥吩,無須再重復(fù)相同的工作哼蛆。
模式是在特定環(huán)境下人們解決某類重復(fù)出現(xiàn)問題的一套成功或有效的解決方案
A pattern is a successful or efficient solution to a recurring problem within a context
1990年,軟件工程界開始關(guān)注Alexander等在建筑方面的重大突破霞赫。由“四人組”(Erich Gamma腮介,Richard Helm,Ralph Johnson和John Vlissides)四名著名的軟件工程學(xué)者端衰,他們在1994年歸納發(fā)表了23種在軟件開發(fā)中使用頻率比較高的設(shè)計(jì)模式叠洗,旨在用模式來統(tǒng)一溝通面向?qū)ο蠓椒ㄔ诜治觥⒃O(shè)計(jì)和實(shí)現(xiàn)之間的鴻溝靴迫。
軟件開發(fā)生命周期的每一個(gè)階段都存在著一些被認(rèn)同的模式
軟件模式的基礎(chǔ)結(jié)構(gòu)
- 問題描述:待解決的問題是什么
- 前提條件:在何種環(huán)境或約束條件下使用
- 解決辦法:如何解決
- 效果:有哪些優(yōu)缺點(diǎn)
軟件模式與具體的應(yīng)用領(lǐng)域無關(guān)惕味,無論是移動開發(fā)楼誓,Web開發(fā)還是嵌入式開發(fā)等玉锌,都可以使用軟件模式。
設(shè)計(jì)模式作為最深的分支疟羹,用于在特定條件下為一些重復(fù)出現(xiàn)的軟件設(shè)計(jì)問題提供合理的有效的解決方案主守。
設(shè)計(jì)模式是什么
設(shè)計(jì)模式的定義
設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用、多數(shù)人知曉的榄融、經(jīng)過分類編目的参淫,代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié),使用設(shè)計(jì)模式是為了可重用代碼愧杯、讓代碼更容易被他人理解并保證代碼可靠性涎才。
設(shè)計(jì)模式的內(nèi)容
- 模式名稱:通過一兩個(gè)詞描述模式的問題、解決方案和效果,以便更好地理解模式并方便開發(fā)人員之間的交流耍铜,絕大多是模式都是根據(jù)其功能或者模式結(jié)構(gòu)來命名
- 問題:描述了應(yīng)該在何時(shí)使用模式邑闺,它包含了設(shè)計(jì)中存在的問題以及問題存在的原因
- 解決方案:描述了一個(gè)設(shè)計(jì)模式的組成部分,以及這些組成成分之間的相互關(guān)系棕兼,各自的職責(zé)和協(xié)作方式陡舅,通常通過UML類圖和核心代碼進(jìn)行描述
- 效果:描述了模式的優(yōu)缺點(diǎn)以及在使用模式時(shí)應(yīng)權(quán)衡的問題
設(shè)計(jì)模式的分類
23個(gè)GoF設(shè)計(jì)模式(還有一個(gè)不再23種GoF設(shè)計(jì)模式種的【簡單工廠模式】)
- 根據(jù)用途分類
- 創(chuàng)建型(5個(gè)):主要用于描述如何創(chuàng)建對象
單例模式 Singleton Pattern
工廠方法模式 Factory Method Pattern
抽象工廠模式 Abstract Factory Pattern
原型模式 Prototype Pattern
建造者模式 Builder Pattern
簡單工廠模式 Simple Factory Pattern- 結(jié)構(gòu)型(7個(gè)):主要用于描述如何實(shí)現(xiàn)類或?qū)ο蟮慕M合
適配器模式 Adapter Pattern
橋接模式 Bridge Pattern
組合模式 Decorator Pattern
裝飾模式 Decorator Pattern
外觀模式 Facade Pattern
享元模式 Flyweight Pattern
代理模式 Proxy Pattern
- 行為型(11個(gè)):主要用于描述類或?qū)ο笤鯓咏换ヒ约霸鯓臃峙渎氊?zé)
職責(zé)鏈模式 Chain of Responsibility Pattern
命令模式 Command Pattern
解釋器模式 Interpreter Pattern
迭代器模式 Iterator Pattern
中介者模式 Mediator Pattern
備忘錄模式 Memento Pattern
觀察者模式 Observer Pattern
狀態(tài)模式 State Pattern
策略模式 Strategy Pattern
模版方法模式 Template Method Pattern
訪問者模式 Visitor Pattern
- 根據(jù)處理對象分類
- 類模式:用于處理類之間的關(guān)系
- 對象模式:用于處理對象之間的關(guān)系
這是作為完成劉偉老師的課程后的課程總結(jié)。真的是不錯(cuò)的老師伴挚,祝您教師節(jié)快樂靶衍!