目錄
1. 工廠方法模式概述
1.1 工廠方法模式概念
1.2 工廠方法模式類圖
2. 工廠方法模式實現原理
3. 工廠方法模式優缺點
3.1 優點
3.2 缺點
又稱為虛擬構造器(virtual constructor)模式或多型模式,屬於建立型模式。在工廠方法模式中,父類負責定義建立物件的公共介面,而子類負責生產具體的物件,這樣做的目的是將類的例項化操作延遲到子類中來完成,即由子類決定例項化哪乙個類。核心的工廠類不再負責所有的產品的建立,而是將具體建立的工作交給子類去做
表示抽象工廠,定義了工廠介面,它宣告了工廠方法,返回乙個產品。
factory***
表示具體工廠(concretefactory),它實現了工廠方法,由客戶端呼叫,返回乙個產品的例項。
product
表示抽象產品,定義了產品的介面。
product***
表示具體產品,實現了抽象產品介面。
下面以生產寶馬,奧迪汽車和消費者消費汽車為例項:汽車介面類:寶馬汽車類:/**
* 汽車介面
* @author administrator
*/public inte***ce car
奧迪汽車類:/**
* 寶馬汽車類
* @author administrator
*/public class baomacar implements car
}
工廠介面類:/**
* 奧迪汽車類
* @author administrator
*/public class aodicar implements car
}
寶馬工廠類:/**
* 汽車工廠介面
* @author administrator
*/public inte***ce factory
奧迪工廠類:/**
* 寶馬汽車工廠類
* @author administrator
*/public class baomafactory implements factory
}
消費者類:/**
* 奧迪汽車工廠類
* @author administrator
*/public class aodifactory implements factory
}
執行效果:/**
* 消費者類
* @author administrator
*/public class customer
}
可以看出,工廠模式比簡單工廠模式的實現方式不同。核心的工廠類不再負責所有的產品的建立,而是將具體建立的工作交給子類去做。如果有新的產品,只需新增相應的產品和產品工廠類即可。奧迪汽車啟動!
寶馬汽車啟動!
當工廠方法模式的工廠類只有乙個,且工廠方法為靜態方法時,就變成了簡單工廠模式。工廠方法方法模式是簡單工廠模式的衍生,解決了許多簡單工廠模式的問題。首先完全實現開閉原則,實現了可擴充套件。其次更複雜的層次結構,可以應用於產品結果複雜的場合。在系統中加入新的產品時,無須修改抽象工廠和抽象產品提供的介面,無須修改客戶端,也無須修改其他具體工廠和具體產品,而只要新增乙個具體工廠和具體產品即可,這樣系統的可擴充套件性變得很好,符合開閉原則。
工廠方法模式隔離了具體類的生成,使得客戶端並不需要知道什麼樣的物件被建立。用於這樣的隔離,使得更換乙個具體工廠就變得容易。
在新增新產品的時候,需要編寫新的具體產品類,而且還要提供與之對應的具體工廠類,這樣會增加系統類的個數,增加系統開銷。
建立型模式 工廠方法模式
定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。factorymethod使乙個類的例項化延遲到其子類。1.當乙個類不知道它所必須建立的物件的類的時候。2.當乙個類希望由它的子類來指定它所建立的物件的時候。3.當類將建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是 者這...
建立型模式 工廠方法模式
在 簡單工廠模式 一節我們介紹了簡單工廠模式,提到了簡單工廠模式違背了開閉原則,而 工廠方法模式 是對簡單工廠模式的進一步抽象化,其好處是可以使系統在不修改原來 的情況下引進新的產品,即滿足開閉原則。優點 缺點 應用場景 工廠方法模式由抽象工廠 具體工廠 抽象產品和具體產品等4個要素構成。本節來分析...
建立型模式 工廠方法
概述 定義乙個用於建立物件的介面,讓子類決定例項化哪一類。factorymethod使乙個類例項化延遲到其子類。適用性 當乙個類不知道它所必須建立的物件的類的時候。當乙個類希望由它的子類來指定它所建立的物件的時候。當類建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是 者這一資...