1:工廠模式是一種比較常見的建立模式, 在實際開發中也是常常使用到。
2:工廠模式的形式:
2.1)簡單工廠模式,而對於簡單工廠模式來說,它是為了讓程式有乙個更好地封裝,降低程式模組之間的耦合程度,對於簡單的工廠模式,其實也可以將其理解成為乙個建立物件的工具類。在這個工具類裡面,我們就可以進行一些其他操作,比如物件的初始化。這樣就避免了把物件初始化的大量**(如果有大量**的話)放在建構函式裡了。
具體的**實現:
public class ******factory else if (clazz.getname().equals(broom.class.getname()))
return null;
}private broom createbroom()
private plane createplane()
}
簡單工廠模式的測試:
public class factorytest
}
2.2)工廠方法模式:
在簡單的工廠模式裡,我們建立了乙個類似工具的類來建立相應的具體類物件。正因為其太過簡單,有一點不成規範,要對其做一些適當地封裝,工廠方法模式定義了乙個建立物件的介面,但由子類決定要例項化哪乙個。
具體的**實現:
抽象工廠:
public abstract class vehiclefactory
具體工廠:
public class broomfactory extends vehiclefactory
}
這個具體的實現工廠告訴我們,這裡可以通過 create() 方法來建立乙個 broom 物件,有乙個大的工廠它就是 vehiclefactory,vehiclefactory工廠裡又有很多生產車間,其中有乙個就是 broomfactory。
抽象產品介面:
public inte***ce moveable
具體產品:這是一些可以run(移動)的產品。就 broomfactory 生產車間而言,它負責生產 broom,這個 broom 是具有 run的功能(也就是moveable 介面),
public class broom implements moveable
}
工廠方法測試:
vehiclefactory factory = new broomfactory();
moveable moveable = factory.create();
moveable.run();
2.3)抽象工廠模式:
對於具體工廠a和b需要生產一些同型別的不同產品。那麼我們就可以試試抽象工廠模式。
抽象工廠的具體**實現:
抽象工廠:
public abstract class abstractfactory
具體工廠:從抽象工廠的**中也可以看出,抽象工廠只是去「生產」一些抽象的東西。有點類似於底層機制的感覺。
public class factory1 extends abstractfactory
@override
public moveable createmoveable()
@override
public writeable createwriteable()
}
抽象產品介面:在具體工廠裡,我們就可以生產一些具體的產品了。就是這裡的aircraft、car、pen。抽象的產品介面如下。
public inte***ce flyable
具體產品:
public class aircraft implements flyable
}
抽象工廠測試:
public class factorytest
}
3:總結;
以上就是工廠模式的基本實現和詳細說明。包括了簡單工廠模式、工廠方法模式、抽象工廠模式。我們可以基於需求來選擇合適的工廠模式。
java設計模式 工廠模式
工廠模式 存在的目的 定義乙個用於建立複雜類的物件的介面。使用工廠模式,降低了類與類之間的耦合關係。分為三種實現方式 類之間的繼承結構不同 簡單工廠模式 工廠方法模式 抽象工廠模式。主要涉及的三種類 呼叫工廠的類,工廠類,產品類。先看乙個不適用工廠模式的類組織 class bmw32 class b...
JAVA設計模式 工廠模式
一 簡單工廠。它的缺點很明顯,當需要再新增乙個whitehuman類時,需要在工廠類中修改,則 的耦合性很高。建立需要用工廠new的class public inte ce human public class blackhuman implements human public class yel...
java設計模式 工廠模式
靜態工廠模式 為了建立物件而產生 1 有工廠類,有乙個可以根據需求返回建立的物件的方法 2 工廠類中的產生物件的方法的返回值型別是 父類的型別,產生的物件都是子類物件 3 強調 工廠類中的方法的返回值和返回的物件中存在著向上轉型的關係 public class cloth public class ...