JAVA設計模式系列:
定義
簡單工廠模式又叫做靜態工廠方法模式,是常用的實例化對象模式。
角色
工廠類:工廠類包含了負責創建所有實例具體邏輯;可以直接被外界調用來創建所需要的對象。
抽象產品類:工廠類所創建對象的父類。
具體產品類:工廠類創建的具體對象。
實現
這里簡單寫一個示例來實現普通工廠模式。
類圖

抽象產品類
public interface IFruit {
void get();
}
定義了一個抽象水果類IFruit
,其中包含一個get()
。
具體產品類
public class Apple implements IFruit {
@Override
public void get() {
System.out.println("I am a apple.");
}
}
public class Orange implements IFruit {
@Override
public void get() {
System.out.println("I am a orange." );
}
}
定義了2個具體水果類Apple
、Orange
分別實現了IFruit
的get()
方法。
工廠類
public class FruitFactory {
public static IFruit getFruit(String type) {
IFruit ifruit = null;
if ("apple".equals(type)) {
ifruit = new Apple();
} else if ("orange".equals(type)) {
ifruit = new Orange();
}
return ifruit;
}
}
工廠類包含一個靜態方法getFruit()
,功能是:根據不同的type
返回不同的水果實例。
測試
public static void main(String[] args) {
IFruit apple = FruitFactory.getFruit("apple");
IFruit orange = FruitFactory.getFruit("orange");
apple.get();
orange.get();
}
分別調用水果工廠FruitFactory
類來實例化2個不同的水果實例。運行結果:
I am a apple.
I am a orange.
總結
優點:可以隱藏具體類名稱,提供參數給使用者直接調用;避免直接實例化對象,無需準備構造函數參數。
缺點:在增加新產品的時候,必須修改工廠類,違背了開放封閉原則。