關於工廠模式的學習

2021-06-22 07:22:26 字數 2499 閱讀 2271

對於工廠模式,原先發現自己其實了解的很抽象,或者說很膚淺而已。有種一葉蔽目,不見泰山的感覺的吧。其實對於這個模式有些東西根本就沒有乙個全面的概念吧。

最初的一種印象就是如下所示:

package demo05;

public class factorydemo01

if(orange !=null)

if(banana != null) }}

inte***ce fruit

public void getname()

}class orange implements fruit

}class fruitfactoryelse if("orange".equalsignorecase(type))else

}}

程式執行結果為:

這還是在一次面試中,我在講這種工廠模式的時候,面試官讓我說什麼叫抽象工廠模式,我才傻了眼,才知道其實對於工廠模式中其實還是又有好幾種。回來後慢慢查資料,才知道其實上面這種工廠模式又被稱為簡單工廠模式(****** factory pattern),又叫靜態工廠方法模式(static factorymethod pattern),主要是通過專門定義乙個類來負責建立其他類的例項。

何為工廠模式?還是從以下**著手:

package demo06;

public class factorydemo02

} inte***ce fruit

public void getname() }

class orange implements fruit

private orange()

private static orange orange = new orange();

public static orange getinstance() }

inte***ce fruitfactory

public fruit createfruit() }

class orangefactory implements fruitfactory

}

對於這裡的**,我們明顯的可以看到。對於每乙個具體的類都有著乙個具體的工廠類,而這個工廠類就是負責返回此具體類的乙個例項。當然如何返回乙個具體類的例項,可以在具體類中加上一些控制例項化的手段,比如以上**段,可以進行單例模式的乙個控制。其實歸結到底,就是乙個介面類,引申出實體類。乙個工廠介面,引申出具體類實現的工廠。主要類的例項化一定是通過此類所對應的工廠類來實現的。而此工廠類就是通過介面工廠類實現的。(父類的引用指向子類物件)。

什麼叫抽象工廠?它和工廠模式又有什麼區別?請看下面的**:

package demo07;

/* * 比如有某個人想買一套電子裝置

* 電腦:imac,y470

* 手機:iphone,mi 1s

*/public class factorydemo

}inte***ce computer

class imac implements computer

}class y470 implements computer

}inte***ce cellphone

class iphone implements cellphone

}class mi1s implements cellphone

}inte***ce abstractfactory

class defaultfactory implements abstractfactory

public cellphone createcellphone()

}class anothe***ctory implements abstractfactory

public cellphone createcellphone()

}

程式執行結果如下:

抽象工廠模式是工廠方法模式的公升級版本,它用來建立一組相關或者相互依賴的物件。它與工廠方法模式的區別就在於,工廠方法模式針對的是乙個產品等級結構;而抽象工廠模式則是針對的多個產品等級結構。

在抽象工廠模式中,有乙個產品族的概念:所謂的產品族,是指位於不同產品等級結構中功能相關聯的產品組成的家族。抽象工廠模式所提供的一系列產品就組成乙個產品族;而工廠方法提供的一系列產品稱為乙個等級結構。

無論是簡單工廠模式,工廠方法模式,還是抽象工廠模式,他們都屬於工廠模式,在形式和特點上也是極為相似的,他們的最終目的都是為了解耦。在使用時,我們不必去在意這個模式到底工廠方法模式還是抽象工廠模式,因為他們之間的演變常常是令人琢磨不透的。經常你會發現,明明使用的工廠方法模式,當新需求來臨,稍加修改,加入了乙個新方法後,由於類中的產品構成了不同等級結構中的產品族,它就變成抽象工廠模式了;而對於抽象工廠模式,當減少乙個方法使的提供的產 品不再構成產品族之後,它就演變成了工廠方法模式。所以,在使用工廠模式時,只需要關心降低耦合度的目的是否達到了。

關於工廠模式的想法

工廠模式分為 靜態工廠 工廠方法 抽象工廠。工廠模式好處 我想到的 1 物件統一管理,重複使用,修改方便 改一處,多處同時改動 2 物件的產生和使用分離 客戶不關心建立的細節,只關心如何使用 單一職責鏈原則 以前看靜態工廠方法大部分是這樣的 這裡主要不研究工廠模式 public class fact...

關於工廠模式 二

在抽象工廠模式前面有一些其它的資訊,好吧,我有點糊塗了。簡單工廠模式應該是將生產產品的方法放到乙個工廠類中,所有不同的產品由這個工廠類來生產,工廠 creator 角色 簡單工廠模式的核心,它負責實現建立所有例項的內部邏輯。工廠類可以被外界直接呼叫,建立所需的產品物件。抽象產品 product 角色...

工廠模式學習

工廠模式兩種 工廠模式,抽象工廠模式。工廠方法 把物件的實現延遲到子類完成。使用場景 建立物件。好處 降低客戶端與模組之間的耦合度。最少支援原則 工廠模式傳送門 按照傳送門的教程,把簡單工廠模式學習一遍。嘗試用uml,把工廠模式繪製出來。現階段的學習,只能的模仿,體會階段。套路 建立乙個介面。所有產...