設計模式概述


 設計模式概述

一  什么是設計模式

設計模式就是一套代碼設計經驗的總結,它是被反復使用的、多人知曉的、經過分類編目的。使用設計模式提高了代碼的重用性、可維護性和可靠性。

設計模式包括四個基本要素:

  • 模式名稱(pattern name)
  • 問題(problem)
  • 解決方案(solution)
  • 效果(consequences)

一個模式名稱就概括描述了某一類問題應該用什么樣的解決方案及用這樣做的效果。   

二  設計模式的歷史

設計模式在軟件行業中的起源可以追溯到1987年,Ward CunninghamKent BeckSmalltalk做設計用戶界面的工作的時候決定用Alexander的理論發展出一個有五個模式的語言指導Smalltalk新手。

從那以后,Jim Coplien開始搜集C++語言的idioms,並寫成著作《Advanced C++ Programming Style and Idioms》。

1990年到1992年,GOF開始搜集模式的工作。

1993年,Kent BeckGrady Booch主持第一次模式會議,那以后不久,GOF的《Design Pattern》發表。

從那以后,模式大會每年一次在美國舉行。大會的論文也匯編成書。

模式也不斷被應用到軟件工程的各個方面,但至今得到最深研究的仍然是設計模式和代碼模式。

三 設計模式的原則

1、"開-閉"原則

一個軟件實體應當對擴展開放,對修改關閉。就是說:模塊應盡量在不修改原(是"原",指原來的代碼)代碼的情況下進行擴展。

2、里氏代換原則

任何基類可以出現的地方,子類一定可以出現。 

3、依賴倒轉原則

要依賴於抽象,不要依賴於實現。

4、合成/聚合復用原則

要盡量使用合成/聚合,而不是繼承關系達到復用的目的。

5、迪米特法則

一個軟件實體應當與盡可能少的其它實體發生相互作用。

6、接口隔離原則

定制服務的例子,每一個接口應該是一種角色,不多不少,不干不該干的事,該干的事都要干

7、抽象類

抽象類不會有實例,一般作為父類為子類繼承,一般包含這個系的共同屬性和方法。

注意:好的繼承關系中,只有葉節點是具體類,其他節點應該都是抽象類,也就是說具體類是不被繼承的。將盡可能多的共同代碼放到抽象類中。

四 設計模式的分類

根據目的准則和范圍准則對23種經典模式進行分類

 

目的

創建型 結構型 行為型

范圍

Factory Method(工廠方法) Adapter(適配器) Interpreter(解釋器)Template Method(模板 方法)
對象 Abstract Factory(抽象工廠)
Builder(生成器)
Prototype(原型)
Singleton(單件)
Adapter(適配器)
Bridge(橋接)
Composite(組成)
Decorator(裝飾)
Facade(外觀)
Flyweight(享元)
Proxy(代理)
Chain Of Responsibility (職責鏈)
Command(命令)
Iterator(迭代器)
Mediator(中介者)
Memento(備忘錄)
Observer(觀察者)
State(狀態)
Strategy(策略)
Visitor(訪問者)

五 設計模式的使用

    1 合理使用模式,杜絕過度設計和模式痴迷

    像http://developers.slashdot.org/comments.pl?sid=33602&cid=3636102 就是一個諷刺模式痴迷的例子。對於某些初學者經常認為:在同一個應用中,用的模式越多,人就越牛。自己猛着套模式,崇拜能套更多模式的人!

    2 應該通過重構實現、趨向和去除模式。

參考文獻

1 Erich Gamma,Richard Helm,Ralph Johnson,John Vlissides 著.李英軍,馬曉星,蔡敏,劉建中 譯. 設計模式:可復用面向對象軟件的基礎[M].  機械工業出版社,2000

2 閻宏. java與模式[M].  電子工業出版社,2002

3 Joshua Kerievsky著. 楊光,劉基誠譯.重構與模式[M].人民郵電出版社,2006

 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



設計模式概述 設計模式(0)—— 概述 設計模式概述 設計模式概述 設計模式概述 設計模式概述 【設計模式】概述 設計模式概述 設計模式 之 概述 設計模式--概述
 
粤ICP备14056181号  © 2014-2021 ITdaan.com