建立型模式 工廠方法模式

2021-09-11 22:43:12 字數 2661 閱讀 4572

目錄

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使乙個類例項化延遲到其子類。適用性 當乙個類不知道它所必須建立的物件的類的時候。當乙個類希望由它的子類來指定它所建立的物件的時候。當類建立物件的職責委託給多個幫助子類中的某乙個,並且你希望將哪乙個幫助子類是 者這一資...