0 簡單工廠模式數組
0.0 簡單工廠模式動機函數
考慮一個簡單的軟件應用場景,一個軟件系統可提供多個外觀不一樣按鈕(如圓形、矩形按、菱形按鈕等), 這些按鈕都源自同一個父類,不過在繼承父類後不一樣的子類修改了部分屬性從而使得它們可呈現不一樣外觀,若是但願在使用這些按鈕時,不須要知道這些具體按鈕類的名字,只須要知道表示該按鈕類的一個參數,並提供一個調用方便的方法,把該參數傳入方法便可返回一個相應的按鈕對象,此時,就可使用簡單工廠模式。spa
0.1 模式定義設計
簡單工廠模式(Simple Factory Pattern):又稱靜態工廠方法(Static Factory Method) 模式,它屬於類建立型模式。在簡單工廠模式中,能夠根據參數的不一樣返回不一樣類的實例。簡單工廠模式專門定義一個類來負責建立其餘類的實例,被建立的實例一般都具備共同的父類。對象
0.2 模式結構blog
簡單工廠模式包含以下角色:繼承
0.3 簡單工廠模式的缺點接口
1.工廠方法模式(Factory Method Pattern)資源
1.1 模式動機產品
在簡單工廠模式的例子中,設計一個按鈕工廠類(父類)統一負責全部產品建立。
在工廠方法模式中,將具體按鈕的建立過程,交給專門的工廠子類作。
先定義一個抽象的按鈕工廠類,在定義具體的工廠類生成(圓形,矩形,菱形按鈕),它們實如今抽象按鈕工廠類中定義方法。
若是出現新的按鈕類型,只需爲此建立一個新的具體工廠類得到實例。
1.2 模式定義
工廠方法模式也叫虛擬構造器,也叫多態工廠模式。
在工廠方法模式中,工廠父類負責定義建立產品對象的公共接口,
工廠子類負責生成具體的產品對象,這樣作的好處:將產品類的實例化操做延遲到工廠子類中完成,即:經過工廠子類肯定實例化罵一個具體產品。
1.3.模式結構
工廠方法模式包含以下角色:
1.4.模式分析
工廠模式的主要功能:核心的工廠類再也不負責全部產品的建立,將具體的建立交給子類作,核心的工廠類只負責給出具體工廠必須實現的接口,不負責哪個產品類被實例化的細節,便可達到不修改工廠角色的狀況下引入新產品。
工廠父類:定義建立產品對象的公共接口;
工廠子類:負責生成具體的產品對象;子類決定具體實例化哪個具體產品類;
1.5 適用環境
1.6 模式擴展
2.單例模式(singleton Pattern)
2.1 模式定義
單例模式確保某一個;類只有一個實例,並自行實例化向整個系統提供該實例,該類成爲單例類,它提供全局訪問方法。
單例模式的三個要點:
2.2 模式結構
2.3 模式分析
單例模式保證一個類只有一個實例,單例類擁有一個私有構造器,肯定用戶沒法經過new關鍵字直接實例化它,該模式中包含一個靜態私有成員變量與一個靜態公有的工廠方法,該方法負責檢查實例的存在性和實例化本身,而後存儲在靜態成員變量中,以確保只有一個實例被建立。
單例模式實現的過程須要注意:
2.4 實例
在OS中,打印池是一個用於管理打印任務的應用程序,經過打印池用戶可刪除,停止,或者改變打印任務的優先級,在一個OS中只容許運行一個打印池對象,若是重複建立打印池會拋出異常。
2.5 適用環境