簡介
工廠方法模式(Factory method pattern),工廠方法模式是簡單工廠模式的進化版。在簡單工廠設計模式中,我們如果要添加新的功能,那麼是避免不了要修改源代碼的,而工廠方法設計模式,則可以很好的避免這個問題。
代碼實現
下面內容與我上一篇所說的簡單工廠設計模式一樣
1 首先創建一個接口 (car) 有一個 跑的功能
package com.guxiang.factory.simplefactory;
public interface Car {
void run();
}
2 寶馬和奔馳兩輛豪車分別實現了這個car接口
public class BWM implements Car{
public void run() {
System.out.println("寶馬在路上飛奔");
}
}
public class Benz implements Car {
public void run() {
System.out.println("奔馳在路上飛奔");
}
}
以上,是上一篇的
我們開始創建我們的工廠方法
1 首先我們可以創建一個工廠接口
public class BenzFactory implements CarFactory{
public Car createCar() {
return new Benz();
}
}
2 我們創建 寶馬 和 奔馳的 兩個工廠
public class BenzFactory implements CarFactory{
public Car createCar() {
return new Benz();
}
}
public class BWMFactory implements CarFactory{
public Car createCar() {
return new BWM();
}
}
3 我們看客戶類,客戶類使用工廠使用產品
public class Client {
public static void main(String[] args) {
Car car1 = new BWMFactory().createCar();
Car car2 = new BenzFactory().createCar();
car1.run();
car2.run();
}
}
我們再來看它的UML圖
我們可以很明顯的發現,這個比前面的簡單工廠設計模式,複雜了不少,但是它在面向對象上,實現了開閉原則。
對比簡單工廠設計模式
- 在結構複雜度上,簡單工廠夠簡單
- 在代碼的複雜度上,簡單工廠,還是比工廠方法模式簡單
- 在管理的難度上,簡單工廠只需要對外有兩個路徑 , 而工廠設計模式上明顯多
- 簡單工廠沒有實現開閉原則,而工廠方法模式 實現了
綜上所述,實際開發中,簡單工廠用的更多。