1. 程式人生 > >淺談Java工廠模式

淺談Java工廠模式

一.  概念
  工廠模式主要是為建立物件提供過渡介面,以便將建立物件的具體過程遮蔽隔離起來,達到提高靈活性的目的。(工廠模式就相當於建立例項物件的new,我們經常要根據類Class生成例項物件,雖然這樣做,可能多做一些工作,但會給你係統帶來更大的可擴充套件性和儘量少的修改量。)
  
二. 分類
工廠模式在《Java與模式》中分為三類:
1)簡單工廠模式(Simple Factory):不利於產生系列產品;

2)工廠方法模式(Factory Method):又稱為多形性工廠;

3)抽象工廠模式(Abstract Factory):又稱為工具箱,易於產生系列產品,但不利於產生新的產品;

三. 舉例
注:這裡我只說明思路,具體的程式碼,更詳細的原理請參考尚學堂馬士兵老師的視訊教學點選這裡
(1).簡單工廠
假設現在有Car,Train,Plane等這些類,相應的CarFactory,TrainFactory,PlaneFactory裡面會有產生對應物件的方法,利用工廠來生產物件,這種就是簡單工廠。
(2).抽象工廠
抽象工廠模式是在工廠模式的基礎上增加的一層抽象概念。如果比較抽象工廠模式和工廠模式,我們不難發現前者只是增加了一層抽象的概念。抽象工廠是一個父類工廠,可以建立其它工廠類。故我們也叫它“工廠的工廠”。
例如:現實生活中海爾公司會生產好多產品系列,一個系列可能會包括冰箱,洗衣機,電磁爐,另一個系列可能就會生產冰箱,吸塵器之類的。在總的工廠裡面會有生產這一個系列,一個系列的工廠,在這每一個系列裡面又會產生具體的物件。

相關推薦

Java工廠模式

一.  概念   工廠模式主要是為建立物件提供過渡介面,以便將建立物件的具體過程遮蔽隔離起來,達到提高靈活性的目的。(工廠模式就相當於建立例項物件的new,我們經常要根據類Class生成例項物件,雖

Java設計模式——簡單工廠模式

一、定義         通過專門定義一個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。 二、類圖 三、理解         Operation為抽象類,它定義了一個抽象方法getResult;OperationAdd和OperationSubtra

Java設計模式——抽象工廠模式(AbstractFactory)

一、對比簡單工廠模式、工廠方法模式         簡單工廠模式只通過一個工廠類,通過給定引數返回相應的例項物件。工廠方法模式只有一個抽象產品類,而抽象工廠模式有多個。 工廠方法模式的具體工廠類只能建立一個具體產品類的例項,而抽象工廠模式可以建立多個。 普通工廠產出是一個產

Java設計模式——單例項、簡單工廠、抽象工廠、觀察者

最近的專案裡面涉及到一些Java設計模式,在此簡單談一下自己的看法,以下示例一部分參考同行,大部分自己設計。 1.單例模式 如果一個類始終只能建立一個例項,則這個類成為單例類,這種設計模式稱為單例模式。 class Singleton {

Java設計模式——單例模式

一、概述         單例模式主要是為了避免因為建立了多個例項造成資源的浪費,且多個例項由於多次呼叫容易導致結果出現錯誤,而使用單例模式能夠保證整個應用中有且只有一個例項。 二、定義 定義:只

Java設計模式——建造者模式(Builder)

一、概述         將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。         建造者模式將複雜產品的構建過程封裝分解在不同的方法中,使得建立過程非常清晰,能夠讓我們更加精確的控制複雜產品物件的建立過程,同時它隔離了複雜產品物件的建立

Java設計模式——原型模式(Prototype)

一、概述         用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。 二、使用場景 1.當一個系統應該獨立於它的產品建立、構成和表示時。 2.當要例項化的類是在執行時刻指定時,例如,通過動態裝載。  3.為了避免建立一個與產品類層次平行的工廠類

Java設計模式——介面卡模式(Adapter)

一、概述         將一個類的介面轉換成客戶希望的另外一個介面。Adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。在我們的應用程式中我們可能需要將兩個不同介面的類來進行通訊,在不修改這兩個的前提下我們可能會需要某個中介軟體來完成這個銜接的過程

Java設計模式——組合模式(Composite)

一、概述         將物件組合成樹形結構以表示"部分-整體"的層次結構。"Composite使得使用者對單個物件和組合物件的使用具有一致性。它定義瞭如何將容器物件和葉子物件進行遞迴組合,使得客戶在使用的過程中無須進行區分,可以對他們進行一致的處理。在使用組合模式中需要

Java設計模式——外觀模式(facade)

一、概述         為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。我們都知道類與類之間的耦合越低,那麼可複用性就越好,如果兩個類不必彼此通訊,那麼就不要讓這兩個類發生直接的相互關係,如果需要呼叫裡面的方

Java設計模式——享元模式(Flyweight)

一、概述         運用共享技術有效地支援大量細粒度的物件。在一個系統中物件會使得記憶體佔用過多,特別是那些大量重複的物件,這就是對系統資源的極大浪費。享元模式對物件的重用提供了一種解決方案,它使用共享技術對相同或者相似物件實現重用。享元模式就是執行共享技術有效地支援

Java設計模式——迭代器模式(Iterator)

一、概述         給定一個語言,定義它的文法的一種表示,並定義一個直譯器,這個直譯器使用該表示來解釋語言中的句子。 二、使用場景 1.訪問一個聚合物件的內容而無需暴露它的內部表示。  2.支援對聚合物件的多種遍歷。  3.為遍歷不同的聚合結構提供一個統一的介

Java設計模式——觀察者模式(Observer)

一、概述         定義物件間的一種一對多的依賴關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。觀察者模式定義了物件之間的一對多依賴關係,這樣一來,當一個物件改變狀態時,它的所有依賴者都會收到通知並且自動更新。在這裡,發生改變的物件稱之為觀

Java設計模式(十七)責任鏈模式(Chain of Responsibility)

前言: 接下來我們將要談談責任鏈模式,有多個物件,每個物件持有對下一個物件的引用,這樣就會形成一條鏈,請求在這條鏈上傳遞,直到某一物件決定處理該請求。但是發出者並不清楚到底最終那個物件會處理該請求,所

簡單工廠模式工廠方法模式、抽象工廠模式

淺談簡單工廠模式、工廠方法模式、抽象工廠模式 一、概述 簡單說說對這幾個設計模式的理解。名字相近,一幾度弄不清這都是啥跟啥。 都叫xx工廠模式,顧名思義,工廠是要生產產品(在程式設計中就是類的例項物件)的。而這三種模式都是生產型模式,區別在於生產例項的方式、時機以及所能夠達

Java設計模式(五)原型模式(Prototype)

前言: 原型模式雖然是建立型的模式,但是與工程模式沒有關係,從名字即可看出,該模式的思想就是將一個物件作為原型,對其進行復制、克隆,產生一個和原物件類似的新物件。本小結會通過物件的複製,進行講解。在Java中,複製物件是通過clone()實現的,先建立一個原型類: publ

JAVA設計模式之——備忘錄模式(Memento)

一、概述 在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。 二、適用性 1.必須儲存一個物件在某一個時刻的(部分)狀態,這樣以後需要時它才能恢復到先前的狀態。 2.如果一個用介面來讓其它物件直接得到這

JAVA設計模式之——組合模式(Composite)

一、概述 將物件組合成樹形結構以表示"部分-整體"的層次結構。"Composite使得使用者對單個物件和組合物件的使用具有一致性。 二、適用性 1.你想表示物件的部分-整體層次結構。 2.你希望使用者忽略組合物件與單個物件的不同,使用者將統一地使用組合結構

JAVA設計模式之——外觀模式(Facade)

一、概述 為子系統中的一組介面提供一個一致的介面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。 二、適用性 1.當你要為一個複雜子系統提供一個簡單介面時。子系統往往因為不斷演化而變得越來越 複雜。大多數模式使用時都會產生更多更小的類。這使得子系

簡單工廠模式工廠方法模式,抽象工廠模式的優點和缺點

1.簡單工廠模式: 簡單工廠模式的實質是由一個工廠類根據傳入的引數 動態決定應該創建出哪一個產品類的例項 工廠類角色,抽象產品角色,具體產品角色 嚴格說這並不是一個設計模式,簡單工廠沒有抽象類,只有一個工廠類,這個類有個工廠方法是專門返回一個具體產品類,具體