1. 程式人生 > >單例、工廠模式簡介

單例、工廠模式簡介

一. 設計模式

a. 什麼是設計模式?

設計模式是前人經過多次嘗試,總結出來的一套行之有效的處理問題的方法。

比如: 用牛耕田

       先預習,再學習,並做好複習,是行之有效的學習方法。

在軟體程式設計方面,如何去寫程式,並寫好程式,提高複用效率,軟體大師們經過長時間的摸索,得出一些寫程式碼的一般規律,我們把它叫做“軟體編碼設計模式”。

在軟體開發歷史上,有4個人,俗稱“四人幫 (Gang Of Four  GOF)”他們聯合發明了23種設計模式,歷史叫GOF23 , 共同編寫了一本書:《design pattern》, 設計模式與具體語言無關,可適用於任何面向物件程式語言。

b. 為什麼要學習設計模式?

1. 提高程式碼效率,提高可複用度。 (避免加班)

2. 能看的懂別人(大師)的程式碼。

二.   具體設計模式

1.  單例模式 (singleton pattern) 

     適用場合:

          1. 建立一個物件成本高昂,需要消耗大量的CPU時間以及記憶體資源。

               比如hibernatesessionfactory的例項的建立大約要1分鐘。

          2. 物件之間沒有差異(無狀態),沒有必要建立多個物件。

               比如一個類: 

                 Class MathTool{

                    int[]  getScopePrimes(int begin, int end){  }

                    boolean isPrime(int num) {}

}

一個類,沒有屬性,物件之間則沒有差異,我們把這樣的類叫做無狀態的類,這樣的類的物件可以被廣泛複用。

什麼叫單例模式?

一個類如果按照單例設計模式書寫,這個類在應用程式範圍將有且只有一個例項。

技術上如何實現?

       1. 完全阻止其它類來建立本類的例項 (只有本類才能建立自己的例項)

              本類的構造方法全部為私有的,根據訪問修飾符的規範,私有方法只有本類方可呼叫,如果是其它類則無法呼叫該方法,就會出現構造方法不可見導致建立例項的失敗。

       2. 自己確保只建立一個類的例項。

2. 工廠模式 (factory pattern)

        在現實生活中,我們一般無須瞭解某個產品的組裝過程,而只需要向商家或者工廠,以文字的形式,說明你所需要的產品,在交付了對應的費用後,對方將直接給予你這個產品的例項,你直接呼叫就可以了。

        由於產品的組裝需要一個專業的過程,我們可產品的組裝交給一個工廠物件來完成,需要這個產品的使用者只要向工廠申請這個產品就可以了。