Java設計模式學習(簡單工廠模式)
阿新 • • 發佈:2020-12-10
舉例
簡單工廠模式嚴格意義上來說,並不屬於設計模式中的一種,不過這裡還是簡單記錄下。
定義: 由一個工廠物件決定創建出哪一種型別例項。客戶端只需傳入工廠類的引數,無需關心建立過程。
優點: 具體產品從客戶端程式碼抽離出來,解耦。
缺點: 工廠類職責過重,增加新的型別時,得修改工程類的程式碼,違背 開閉原則。
舉例:
1、新建Fruit水果抽象類,包含eat抽象方法:
public abstract class Fruit {
public abstract void eat();
}
2、其實現類Apple:
public class Apple extends Fruit {
@Override
public void eat() {
System.out.println("蘋果");
}
}
3、新建建立Fruit的工廠類:
public class FruitFactory {
public Fruit product(String name) {
if ("apple".equals(name)) {
return new Apple();
} else {
return null;
}
}
}
4、新建個客戶端測試一下:
public class WipeApplication {
public static void main(String[] args) {
// Apple apple = new Apple();
// apple.eat();
FruitFactory fruitFactory = new FruitFactory();
Fruit fruit = fruitFactory.product("apple");
fruit.eat();
}
}
可以看到,客戶端Application並未依賴具體的水果型別,只關心FruitFactory的入參,這就是客戶端和具體產品解耦的體現。