1. 程式人生 > >java設計模式(一)---工廠方法模式

java設計模式(一)---工廠方法模式

基本上有興趣瞭解設計模式的都會知道工廠模式,因為各種模式相關的書籍以及部落格什麼的都是以工廠模式開頭的,對於一時興起或者三天熱度的都是會看到工廠模式,但是工廠模式也是用到比較廣泛的模式,屬於建立型模式。工廠模式分為工廠方法模式和抽象工廠模式,這篇主要總結一下工廠方法模式,而工廠方法模式有細分為:簡單工廠模式、工廠方法模式。還是分開了解一下
既然是工廠模式,為了自己加深理解,例子還是用工廠可以造出來的東西吧,比如手機,當然也可以是其他任何產品。
假設有三個部門(三個小專案):
銷售部門(A專案)、檢測部門(B專案)、體驗部門(C專案),當有新的手機型號(Phone類)時,三個部門都要拿到新機(即A、B、C三個專案都要引用Phone類)。沒有工廠時各個部門都要按照說明書自己創造一個新型的手機(即new一個Phone類)。如果一個產品,沒有問題,但是公司要求每月新增一個新型手機,那就尷尬了。那麼工廠模式就可以幫我們很好的解決這類問題。

1.簡單工廠模式

簡單工廠模式是一個由工廠物件決定創建出哪一種產品類的例項,又叫靜態工廠方法模式。
我們先把手機功能簡化一下,假設只能打電話,發簡訊,玩遊戲,新建一個手機的抽象介面Phone。
介面
手機有三種型號,分別為001、002、003實現方式類似,如下:
手機具體
沒有工廠模式時,舉例體驗部門,假設用玩遊戲來測試:
使用
我們發現每測試一臺新的機型,都要new一個例項,程式碼改的太大。不光體驗部門這樣,其他部門也這樣。這個時候可以先引入一個簡單工廠模式,由工廠來生產手機,也就是new Phone,我們新建一個工廠類:
工廠
這樣其他地方再需要手機的實體類,就可以直接通過工廠獲得,不同的手機型別,只需要傳入不同的引數即可


呼叫
這就是一個簡單的簡單工廠模式,平常大的專案中用到的機會很少,可以自己寫小程式的時候用一下

2.工廠方法模式

工廠方法模式是簡單工廠的進一步抽象和推廣,由於工廠方法模式具有多型性,工廠模式方法既保持了簡單工廠的優點,同時又客服了它的缺點,簡單工廠模式中的工廠類負責建立例項,那麼如果有新的機型新增,就要修改工廠類,這樣也不利於進一步鬆耦合。工廠方法模式中核心工廠類不負責所有例項的建立,而是將具體的建立工作交給了子類去完成,這個核心類成為了一個抽象工廠角色。
工廠方法模式設計到一下四個角色的概念:

1. 抽象工廠角色
工廠方法模式的核心,建立產品的類必須實現該介面
2. 具體工廠角色


該角色實現了抽象工廠介面,具體如何建立產品就是在該類中實現
3. 抽象產品角色
所有產品的超類,負責實現產品共性的抽象定義
4. 具體產品角色
該角色實現了抽象產品介面,負責具體不同產品的業務邏輯
承接上面的工作建立抽象工廠角色
工廠
新建建立機型001的具體工廠角色
實現類
抽象產品角色與具體產品角色已經定義過了Phone與Phone001-003

具體使用:
使用

之前也懷疑過,這樣做比簡單工廠模式來說,是不是脫褲放屁,多次一舉呢,後來接觸的專案越來越多,才發現,一個大的專案可能需要例項化的東西太多,如果用簡單工廠模式的話要不停的去修改工廠類,這樣就不符合開發封閉原則,而且也很不合理,而使用工廠方法模式,只需要擴充套件相應的工廠類即可,不需要修改原有的程式碼,這樣的程式碼才會更健壯。

相關推薦

java設計模式---工廠方法模式

基本上有興趣瞭解設計模式的都會知道工廠模式,因為各種模式相關的書籍以及部落格什麼的都是以工廠模式開頭的,對於一時興起或者三天熱度的都是會看到工廠模式,但是工廠模式也是用到比較廣泛的模式,屬於建立型模式。工廠模式分為工廠方法模式和抽象工廠模式,這篇主要總結一下工廠

Java面向物件設計模式——工廠方法模式

工廠方法模式(Factory Method) 工廠方法模式分為三種: 1、普通工廠模式,就是建立一個工廠類,對實現了同一介面的一些類進行例項的建立。首先看下關係圖: 舉例如下:(我們舉一個傳送郵件和簡訊的例子) 首先,建立二者的共同介面: publici

Objective-C常用設計模式--工廠方法模式

工廠方法模式:定義建立物件的介面,讓子類決定例項化哪一個類。工廠方法使得一個類的例項化延遲到其子類。幾乎所有面向物件語言寫的應用程式都能看到工廠方法。“專門定義一個類來負責建立其他類的例項,被建立的例項通常具有共同的父類。”工廠方法模式使用場景:編譯時無法準確預期要建立的物件

java23種設計模式工廠方法模式

在說工廠方法模式之前,先了解一下簡單工廠模式。工廠方法模式其實是在簡單工廠上面做了一些增強。 簡單工廠模式:有一個專門的類來生產其他類的例項,生產的這些例項有一個共同父類。這個跟我們的多型有一點像。 例子: 假如我們有一個滑鼠工廠,這個工廠既可以生產聯想滑鼠,又可以生產巨集碁滑鼠。 程式碼如下: 1、滑鼠工廠

設計模式---工廠方法模式

ack cto sys alt 修改 spa 抽象類 .com desc 1、簡介:工廠方法模式是類的創建模式,又叫虛擬構造子模式或是多態性工廠模式,它的實現方式是創建一個工廠接口,將實際創建對象的的工作轉移到工廠子類中,在系統的擴展中,可以在不修改工廠角色的情況下引進新的

常用軟體設計模式工廠方法模式

工廠方法模式:定義一個用於建立物件的介面,讓其子類決定例項化哪一個工廠類,工廠模式使其建立過程延遲到子類進行。 優點:1、一個呼叫者想建立一個物件,只要知道其名稱就可以了           

設計模式工廠方法模式

想想我們之前的簡單工廠模式,是這樣的: 結構圖: 工廠類: class OperationFactory{ public static Operation createOperate(string operate){ Operation

Java設計模式工廠模式

目錄 1、工廠模式簡介 2、工廠模式分類 2.1 簡單工廠模式 2.2 工廠方法模式 2.3 抽象工廠模式 1、工廠模式簡介 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之

跟著實例學習設計模式3-工廠方法創建型

迪米特 tex 新的 類的設計 package set pre sdn sso 工廠方法屬於創建型設計模式。 設計意圖:定義一個用於創建對象的接口。讓子類決定實例化哪一個類,工廠方法使一個類的實例化延遲到其子類。 靜態工廠使用面向對象的方式,有

設計模式工廠模式

inside 類和對象 ace square 種類型 創建 實體類 需要 服務器 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建對象時不會

設計模式—— 工廠方法

源碼下載 工廠方法模式 ati \n end 註意 con 流程 pie 工廠方法 模式簡介 工廠方法模式(Factory Method Pattern)又被稱為工廠模式,也叫虛構造器(Virtual Constructor)模式或多態工廠(Polymorphic Fact

LVOOP設計模式在路上-- 工廠方法模式

img alt 小夥伴 分享 mage 微信公眾 pcb 相關 持續更新 LVOOP系列轉到微信公眾號持續更新,這裏將同步更新鏈接:https://mp.weixin.qq.com/s/jVMpCbZe46e1bVmrRsbv-w 對LabVIEW感興趣的小夥伴歡迎關註我的

java設計模式建立型模式之 單例模式餓漢式,懶漢式,執行緒安全,雙重檢查

1.介紹     單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許一個例項存在。  2.實現思路與步驟   1).將該類的構造方法定義為私有方法,這樣其他處的程式碼就無法通過呼叫該類的構造方法來例項化該類的物件,只有通過該類提供的靜態

設計模式-2工廠方法

一,工廠方法模式 工廠方法模式:定義建立物件的介面,讓子類決定例項化那一個類。工廠方法使得類的例項化延遲到其子類。 靜態類結構圖: Product:產品抽象類,定義產品物件的建立介面。 ConcreteProduct:實現Product介面的具體產品類。 Creator:

設計模式工廠模式 -- 理解記憶方式

  設計,是為了更好的應對變化。   思考記憶方向:此模式是不是 提取了抽象、分離了具體、依賴於抽象、封裝了具體   /** * 簡單工廠 :一個簡單工廠(選擇某個資料庫) + 資料庫介面(多個數據庫例項) * * IFactory * MySqlFactory OracleFacto

設計模式工廠模式Factory建立型

         在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說, 許多型別物件的創造需要一系列的步驟: 你可能需要計算或取得物件的初始

以C/C++語法淺談二十三種設計模式——工廠模式Factory Method

0.寫在前面 在軟體開發過程中,為了提高開發效率、增強軟體執行的穩定性,降低後期專案維護的成本,我們志在追求更加高效、簡單的設計思路來引領我們的專案產品,在經過不斷的探索與總結的過程中,我們最常用的設計模式有23中,總體分為三大類,即建立型模式、結構型模式和行為型模式,具體如下:

Java設計模式模版方法模式

模版方法:在抽象類中定義了一個模版方法,在模版方法中使用了一些該抽象類中定義的空方法,而這些空方法可以供子類實現。 我們在檢視原始碼時經常能夠看到在執行一些重要的方法時,往往呼叫了一些看似沒有什麼意義的空方法。其實這就是模版方法。 abstract class Th

設計模式深入學習IOS版3工廠方法模式

1 前言   上篇部落格我們學習了簡單工廠模式,今天我們深入一點,學習一下工廠方法模式。工廠方法模式是在簡單工廠模式的基礎上延伸出來的,只不過把原來的工廠類給抽象出來了,這樣是的工廠類可擴充套件性增強。從而進一步的進行了抽象。 2 詳述 2.1 定義   定義一個用於建立