設計模式

設計模式並不直接用來完成代碼的編寫,而是描述在各種不同情況下,要怎麼解決問題的一種方案。
面向對象設計模式通常以類或對象來描述其中的關係和相互作用,但不涉及用來完成應用程序的特定類或對象。
設計模式能使不穩定依賴於相對穩定、具體依賴於相對抽象,避免會引起麻煩的緊耦合,以增強軟件設計面對並適應變化的能力。
並非所有的軟件模式都是設計模式,設計模式特指軟件“設計”層次上的問題。還有其它非設計模式的模式,如架構模式。同時,算法不能算是一種設計模式,因爲算法主要是用來解決計算上的問題,而非設計上的問題。

創建型模式

抽象工廠模式:爲一個產品族提供了統一的創建接口。當需要這個產品族的某一系列的時候,可以從抽象工廠中選出相應的系列創建一個具體的工廠類。File:Abstract factory UML.svg

工廠方法模式
定義一個接口用於創建對象,但是讓子類決定初始化哪個類。工廠方法把一個類的初始化下放到子類。

根據InputStream is來選擇要創建的ImageReader
 public class ImageReaderFactory {
     public static ImageReader getImageReader( InputStream is ) {
         int imageType = figureOutImageType( is );
 
         switch( imageType ) {
         case ImageReaderFactory.GIF:
             return new GifReader( is );
         case ImageReaderFactory.JPEG:
             return new JpegReader( is );
         // etc.
         }
     }
 }

ImageReader接口和它的兩個子類模板

 public interface ImageReader {
     public DecodedImage getDecodedImage();
 }
 public class GifReader implements ImageReader {
     public GifReader( InputStream in ) {
       // ....
 }
 public class JpegReader implements ImageReader {
     //....
 }
生成器模式將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。
惰性初始模式推遲對象的創建、數據的計算等需要耗費較多資源的操作,只有在第一次訪問的時候才執行。
對象池模式通過回收利用對象避免獲取和釋放資源所需的昂貴成本。
原型模式用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。
單例模式確保一個類只有一個實例,並提供對該實例的全局訪問。
多例模式:確保一個類只有命名的實例,並提供對這些實例的全局訪問。
資源獲取爲初始化通過綁定到合適對象的生命週期來確保資源被適當地釋放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章