Design Pattern - 資源總整理
要學Design Pattern之前, 一定要先搞懂的物件導向基礎:
強烈建議先閱讀91Design Pattern學習的心得之後,再開始學習Design Pattern。文中提到學Design Pattern時必須具備下列的物件導向知識。強調Design Pattern只是幫助物件導向程式達到「高內聚、低耦合」的目的。並且需遵照設計原則來使用。
- 三大特性:封裝、繼承、多型
- 兩種抽象:interfact、abstract
- 目的:高內聚、低耦合
- SOLID 原則:單一職責原則、開放封閉原則、里氏替換原則、最小知識原則、介面隔離原則、依賴反轉原則
- 設計原則:DRY、KISS、YAGNI
- 設計方式:interface-driven、intention-driven、生成物件與使用物件分開
- 延伸閱讀:
Kent Beck 的四個簡單程式設計原則
一些軟件設計的原則
文中提到,濫用Design Pattern的傷害很可能比不用Design Pattern還要大。使用時須根據需求來運用Design Pattern,而非無節制的使用Patterns。
Pin 點部落
Design Pattern目錄
這是一個我很推薦的學習資源,內容以深入淺出設計模式的學習筆記為主要骨幹。深入淺出設計模式寫得很好,但稍嫌囉嗦,故事敘述往往花了很長的篇幅,因此我選擇精簡整理過的筆記,也就是這個網站的資源來學習。
Teddy搞笑談軟工
Teddy提到坊間的書籍,如大話設計模式、設計模式之禪……等等的書籍,以範例來說明Design Patern,以實際
程式來解說Desgin Pattern。諸如此類以「操作型定義」來學習,對於入門來說是個好方法。然而由GOF所著作的Design Pattern書中提到的抽象型定義,卻沒有書籍著重在這方面。因此Teddy使用6大元素,將抽象型定義囊括其中,藉以探究Design Pattern。
Teddy流 - 物件導向核心概念
亂談軟體設計(1):Cohesion and Coupling
亂談軟體設計(2):Open-Closed Principle
亂談軟體設計(3):Single-Responsibility Principle
亂談軟體設計(4):Liskov Substitution Principle
亂談軟體設計(5):Dependency-Inversion Principle
亂談軟體設計(6):Single Choice PrincipleTeddy流 - 設計與設計模式
設計的定義
盤點 Design Patterns
設計模式的逆襲:種子篇
Force是什麼Teddy流 - 從Force出發
了解Force讓你做出好設計(1):自然界與設計界的Force
了解Force讓你做出好設計(2):一個軟體設計範例
尋找Force實驗1:Observer篇
尋找Force實驗2:State Pattern篇
尋找Force實驗3:Adapter Pattern篇
尋找Force實驗4:Facade篇
尋找Force實驗5:Proxy篇
尋找Force實驗6:Singleton篇Teddy流-重新整理系列
重新整理Adapter Pattern
重新整理Singleton Pattern
重新整理Factory Method Pattern
重新整理Abstract Factory Pattern
重新整理Template Method Pattern
重新整理Composite Pattern
重新整理Observer Pattern
重新整理Facade Pattern
重新整理Strategy Pattern
重新整理State Pattern
- Teddy流-要解決什麼問題系列
Creational Patterns要解決什麼問題(上)?
Creational Patterns要解決什麼問題(中)?
Creational Patterns要解決什麼問題(下)?
Structural Patterns要解決什麼問題(上)?
Behavioral Patterns要解決什麼問題(一)?
91的站
很棒的站,對於物件導向觀念一直延伸至Design Pattern,一整套的學習教材。進階版有實際範例將程式重構為Design Pattern的型式。
iT邦
ASP.NET由淺入深 不負責講座系列
重構之路系列
參考書籍
深入淺出設計模式
最多人推薦的教材,我也不例外,從最直覺但有缺陷的方式開始思考,慢慢推導致Design Pattern的產生。並不時檢視著SOLID五大原則。非常適合打基礎。缺點是故事篇幅啥在太長,常常看到恍神。書中只講解到其中幾種的Design Pattern並非全部。大話設計模式
引導讀者進入情境,讓讀者思考該用甚麼方法解決問題,類似深入淺出設計模式。優點是故事較短,很容易閱讀。缺點是有些例子對Pattern的了解有限,程式碼有些是中文,較難閱讀。設計樣式的解析與活用
Teddy在網站中推薦的教材,少數有提到抽象型定義的書籍。