java設計模式之工廠模式

2021-07-28 01:34:06 字數 1553 閱讀 9939

一、簡單工廠模式

以生產電腦舉例。

1、建立電腦父類,該父類提供構造方法。

2、建立子類,如聯想電腦以及蘋果電腦均繼承父類「電腦」,重寫父類的構造方法,不同的電腦構造方法也有所不同。

3、提供工廠類,工廠類提供乙個生產電腦的公有方法,方法的返回為電腦,方法引數即為不同的電腦傳值,如電腦名稱,可以傳值「聯想」或者「蘋果」。方法內部判斷傳值,如果傳值為「聯想」,則呼叫聯想電腦的構造方法,返回聯想電腦;如果傳值為「蘋果」,則呼叫蘋果電腦的構造方法,返回蘋果電腦。

4、建立工廠類例項,呼叫工廠類的生產電腦的方法,只需要在方法的傳值中設定不同的電腦名稱,既可以得到不同的電腦子類物件。

二、工廠方法模式

還是以生產電腦舉例。

1/2步與簡單工廠模式一致。

3、建立工廠類介面。

4、建立不同的工廠類實現,如蘋果電腦工廠、聯想電腦工廠,電腦工廠提供生產電腦的方法,方法返回與工廠相對應的電腦。

5、建立不同的工廠類例項,呼叫工廠類的生產電腦的方法,即可得到不同的電腦子類物件。

簡單工廠模式與工廠方法模式的相同點:

(1)產品類都是一致的,如上舉例即,都有電腦父類以及不同的電腦子類實現父類。

不同點:

(1)簡單工廠模式只有乙個工廠類,它是通過「建立電腦」的方法的傳值來判斷究竟是返回何種電腦;而工廠方法模式,則有多少個子類實現,即有多少個工廠,如上舉例即為有多少種電腦,就有多少種電腦工廠,每種工廠只生產相對應的電腦.

(2)當使用者需要得到指定的電腦時,使用簡單工廠模式下,例項化的都是同乙個工廠類(只有乙個工廠類),只是在呼叫工廠類的「建立電腦」方法時,通過不同的方法傳值來指定建立何種電腦;在使用工廠方法模式下,使用者需要何種電腦,則需要先例項化相對應的電腦工廠,再呼叫工廠類的「建立電腦」方法得到指定的電腦。

總結:簡單工廠模式是通過工廠類建立方法的傳值來判斷例項化何種子類物件,工廠方法模式是通過建立不同的工廠類,來生產指定的電腦。

三、抽象工廠模式

還是以電腦舉例,如電腦有不同的顯示卡和處理器,這裡假設蘋果電腦使用英偉達的顯示卡和英特爾的處理器,聯想電腦使用超微的顯示卡和超微的處理器。

1、建立顯示卡的父類介面,並建立英偉達和超微的顯示卡子類顯現介面,不同的子類返回不同的顯示卡。

2、建立處理器的父類介面,並建立英特爾和超微的處理器子類實現介面,不同的子類返回不同的處理器。

3、建立電腦工廠父類介面,介面內部提供兩個抽象方法,乙個是生產處理器,另乙個是生產顯示卡。

4、建立不同子類電腦工廠實現父類介面,如蘋果電腦工廠和聯想電腦工廠,電腦工廠子類內部重寫父類的生產處理器和生產顯示卡方法。蘋果電腦工廠內部的生產處理器的方法則返回英特爾的處理器,生產顯示卡的方法則返回英偉達的顯示卡;聯想電腦工廠同理。

5、使用者想要生產蘋果電腦,則先例項化蘋果電腦工廠子類物件,再呼叫蘋果電腦工廠的生產顯示卡和生產處理器的方法,即可得到一台顯示卡是英偉達處理器是英特爾的蘋果電腦了;聯想電腦同理。

總結:抽象工廠模式和工廠方法模式很相似,只不過工廠方法模式的只提供乙個方法去建立子類,你是蘋果電腦工廠則生產蘋果電腦;而抽象方法模式則可以設定更詳細的子類,比如蘋果電腦工廠,生產的也是蘋果電腦,但是蘋果電腦的顯示卡和處理器是跟工廠提供的方法掛鉤的,所以抽象工廠模式更為詳細。

java設計模式之工廠模式

工廠模式是一種經常被使用到的模式,根據工廠模式實現的類可以根據提供的資料生成一組類中某乙個類的例項,通常這一組類有乙個公共的抽象父類或者是介面並且實現了相同的方法,但是這些方法針對不同的資料進行了不同的操作。首先需要定義乙個父類或者介面,該類的子類通過不同的方法實現了父類中的方法。然後需要定義乙個工...

java設計模式之工廠模式

1 只要方法裡面控制產生物件的方法,就可稱為工廠相關方法。2 單例 多例。3 簡單工廠 例子 交通工具 多種交通工具 多種交通工具不同的生產過程 4 介面抽象類使用 一般乙個特性使用介面 會飛的 大概能定義為乙個物體使用抽象類 由於類的多繼承性,建議多用介面。5 抽象工廠 換掉一些列的產品,擴充套件...

java設計模式之工廠模式

工廠模式包括工廠方法模式和抽象工廠模式兩種。實際是將介面的例項建立交給乙個工廠類來做。1.工廠方法模式 又包括普通工廠模式 多方法工廠模式 靜態工廠模式三種設計方式。例如 介面 public inte ce father 實現類public class child1 implements fathe...