1. 程式人生 > >設計模式初篇

設計模式初篇

設計模式的認識

本文主要總結的自身對設計模式的學習的一些總結。
    設計模式主要是一些編碼的技巧,使得整個專案的程式碼看起來更清晰,擴充套件效能方面更好。要說沒有設計模式,其實具體的功能還是能實現的,只是具體的靈活的實現還是得靠自己慢慢摸索總結出自己的模式方法。
    在武俠招式上講究無招勝有招,之所以能達到無招的地步其實還是得先建立在一定得招式基礎上,然後忘卻招式,領悟出一套自己的武功應對模式也就是無招。其實編碼設計的技巧也是如此,先得從有設計模式開始,從靈活理解和使用設計模式開始,然後再慢慢從中領會自己的一套編碼設計模式,最後擁有得屬於自己的設計模式思想才是最重要的。
    一直以來我都非常佩服那些能同時掌握設計模式+演算法

的大神們,想著向他們靠近。演算法體現為解決問題的思路和把思路用程式碼轉換的能力。設計模式則讓專案程式碼更具靈活性,擴充套件性。設計模式(自己的一套)+演算法很重要,很重要,很重要!!!

為什麼要有招

閱讀第三方優秀原始碼更容易,快捷。

其實,當時我學設計模式,是因為看不懂大神們寫的程式碼。當時,開發需求是這樣的,Android開發中需要編寫一個圓形圖片的控制元件。我當時的思路是:
   定義一個類繼承ImageView,複寫父類的onDraw(Canvas paramCanvas)方法,通過建立一個圓Bitmap來繪製畫布。
這個思路確實是能實現這個功能,但我也在網上查閱了別人寫的優秀程式碼。他們的實現是這樣的:
//先定義的一個抽象類
abstract class MaskedImage extends ImageView{ public abstract Bitmap createMask(); protected void onDraw(Canvas paramCanvas) { ....... Bitmap localBitmap1 = createMask(); ....... } } //然後再增加一個類來實現具體的功能 CirCleImage extends MaskedImage { .........//實現建立圓形Bitmap
} } 當時,很不理解,為什麼實現這個圓形控制元件功能要多寫一個類CirCleImage ,直接在第一個類MaskedImage實現不就好了。他這樣寫的好處是什麼尼???這深深的吸引我了,後來在學設計模式中找到了答案。

輔助形成自己的一套程式設計設計模式。(從模式來到模式去)

設計模式分為3大類——建立型(5種)、結構型(7種)、行為型(11種)。
設計模式種類確實繁多,這更需要我們在掌握到設計模式的時候,能領悟一套屬於自己的設計模式,在實際開發中能靈活使用屬於自己的設計模式。
終究還是得先從掌握現有的設計模式開始,再從中另外到屬於自己的設計模式,即從模式來到模式去。
我的從模式來的方式:
**1.利用閱讀第三方優秀原始碼來掌握和學習每大型別的設計模式,我閱讀的是JDK。**
**2.每大型別中的的設計模式之間相互比較,從比較中,掌握各個模式的優勢。**

設計模式的分類

建立型類別的設計模式
提供了建立什麼(what),由誰來建立(who),以及何時(when)來建立
目的:在一個系統用來建立物件,將類的例項化進行抽象,適用於一個系統中要進行多個不同物件的建立。
共同的主要功能:
1.將系統中所用的具體類的資訊進行封裝起來。
2.可以隱藏類的例項是如何被建立和組織的,(可以理解為代理生成物件)。對外界只提供這個系統生成物件的統一介面,而不能清除知道其具體的實現。
結構型類別的設計模式
主要是對類的結構和類與類之間的關係進行的設計,採用類間或者介面與類間的關聯組合或依賴來實現為物件新增新的功能
行為型類別的設計模式
主要是對物件的行為進行設計,主要解決物件間的聯絡問題也可以理解為解決物件與物件間的通訊。