實例解析Java單例形式編程中對籠統工場形式的應用。本站提示廣大學習愛好者:(實例解析Java單例形式編程中對籠統工場形式的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是實例解析Java單例形式編程中對籠統工場形式的應用正文
界說:為創立一組相干或互相依附的對象供給一個接口,並且無需指定他們的詳細類。
類型:創立類形式
類圖:
籠統工場形式與工場辦法形式的差別
籠統工場形式是工場辦法形式的進級版本,他用來創立一組相干或許互相依附的對象。他與工場辦法形式的差別就在於,工場辦法形式針對的是一個產物品級構造;而籠統工場形式則是針對的多個產物品級構造。在編程中,平日一個產物構造,表示為一個接口或許籠統類,也就是說,工場辦法形式供給的一切產物都是衍生自統一個接口或籠統類,而籠統工場形式所供給的產物則是衍生自分歧的接口或籠統類。
在籠統工場形式中,有一個產物族的概念:所謂的產物族,是指位於分歧產物品級構造中功效相干聯的產物構成的家族。籠統工場形式所供給的一系列產物就構成一個產物族;而工場辦法供給的一系列產物稱為一個品級構造。我們仍然拿臨盆汽車的例子來講明他們之間的差別。
在下面的類圖中,兩廂車和三廂車稱為兩個分歧的品級構造;而2.0排量車和2.4排量車則稱為兩個分歧的產物族。再詳細一點,2.0排量兩廂車和2.4排量兩廂車屬於統一個品級構造,2.0排量三廂車和2.4排量三廂車屬於另外一個品級構造;而2.0排量兩廂車和2.0排量三廂車屬於統一個產物族,2.4排量兩廂車和2.4排量三廂車屬於另外一個產物族。
明確了品級構造和產物族的概念,就懂得工場辦法形式和籠統工場形式的差別了,假如工場的產物全體屬於統一個品級構造,則屬於工場辦法形式;假如工場的產物來自多個品級構造,則屬於籠統工場形式。在本例中,假如一個工場形式供給2.0排量兩廂車和2.4排量兩廂車,那末他屬於工場辦法形式;假如一個工場形式是供給2.4排量兩廂車和2.4排量三廂車兩個產物,那末這個工場形式就是籠統工場形式,由於他供給的產物是分屬兩個分歧的品級構造。固然,假如一個工場供給全體四種車型的產物,由於產物分屬兩個品級構造,他固然也屬於籠統工場形式了。
示例
我們來看工場類的籠統類例子:
package AbstractFactory; public abstract class AbstractCreator { //創立A產物辦法 public abstract AbstractProductA createProductA(); //創立B產物辦法 public abstract AbstractProductB createProductB(); }
產物A的籠統類
package AbstractFactory; public abstract class AbstractProductA { //產物A共有的辦法 public void shareMethod(){ System.out.println("產物A共有的營業邏輯處置辦法..."); } //產物A分歧子產物分歧完成 public abstract void doSomething(); }
產物B 的籠統類
package AbstractFactory; public abstract class AbstractProductB { //產物B共有的辦法 public void shareMethod(){ System.out.println("產物B共有的營業邏輯處置辦法..."); } //產物B分歧子產物分歧完成 public abstract void doSomething(); } 產物線1的工場完成類 package AbstractFactory; public class Creator1 extends AbstractCreator { @Override public AbstractProductA createProductA() { return new ProductA1(); } @Override public AbstractProductB createProductB() { return new ProductB1(); } } 產物線2的工場完成類 package AbstractFactory; public class Creator2 extends AbstractCreator { @Override public AbstractProductA createProductA() { return new ProductA2(); } @Override public AbstractProductB createProductB() { return new ProductB2(); } }
產物A1
package AbstractFactory; public class ProductA1 extends AbstractProductA { @Override public void doSomething() { System.out.println("產物A1的營業邏輯處置辦法..."); } }
產物A2
package AbstractFactory; public class ProductA2 extends AbstractProductA { @Override public void doSomething() { System.out.println("產物A2的營業邏輯處置辦法..."); } }
產物B1
package AbstractFactory; public class ProductB1 extends AbstractProductB{ @Override public void doSomething() { System.out.println("B1的營業邏輯處置辦法..."); } }
產物B2
package AbstractFactory; public class ProductB2 extends AbstractProductB{ @Override public void doSomething() { System.out.println("B2的營業邏輯處置辦法..."); } }
籠統工場形式的長處
籠統工場形式除具有工場辦法形式的長處外,最重要的長處就是可以在類的外部對產物族停止束縛。所謂的產物族,普通或多或少的都存在必定的聯系關系,籠統工場形式便可以在類外部對產物族的聯系關系關系停止界說和描寫,而不用專門引入一個新的類來停止治理。
籠統工場形式的缺陷
產物族的擴大將是一件非常辛苦的工作,假設產物族中須要增長一個新的產物,則簡直一切的工場類都須要停止修正。所以應用籠統工場形式時,對產物品級構造的劃分長短常主要的。
實用場景
當須要創立的對象是一系列互相聯系關系或互相依附的產物族時,即可以應用籠統工場形式。說的更明確一點,就是一個繼續系統中,假如存在著多個品級構造(即存在著多個籠統類),而且分屬各個品級構造中的完成類之間存在著必定的聯系關系或許束縛,便可以應用籠統工場形式。假設各個品級構造中的完成類之間不存在聯系關系或束縛,則應用多個自力的工場來對產物停止創立,則更適合一點。
總結
不管是簡略工場形式,工場辦法形式,照樣籠統工場形式,他們都屬於工場形式,在情勢和特色上也是極其類似的,他們的終究目標都是為懂得耦。在應用時,我們不用去在乎這個形式究竟工場辦法形式照樣籠統工場形式,由於他們之間的演化經常是使人揣摩不透的。常常你會發明,明明應用的工場辦法形式,當新需求光降,略加修正,參加了一個新辦法後,因為類中的產物組成了分歧品級構造中的產物族,它就釀成籠統工場形式了;而關於籠統工場形式,當削減一個辦法使的供給的產物不再組成產物族以後,它就演化成了工場辦法形式。
所以,在應用工場形式時,只須要關懷下降耦合度的目標能否到達了。