一、引
工廠方法模式光從名字上就和簡單工廠模式很相似,其實具體的含義和實現也很相似,只不過工廠方法模式將原本簡單工廠模式中的工廠類進行了抽象,具體化了不同操作的工廠類。簡單的說,就是依據封閉-開放原則,對簡單工廠模式進行了修改。
二、問題
爲了能夠和簡單工廠模式進行比較,這次的問題還是設計一個簡單了計算程序。
三、理解
我們用簡單工廠模式進行設計, 可以先轉至我的另一篇博文,看看簡單工廠模式是怎麼實現的。知道了如何實現簡單工廠模式之後,我們用之前學習過的幾個原則來審視一下簡單工廠模式。當我需要增加開根號或者其他算數方式的時候,我們需要修改工廠類中的Case分支,這違反了什麼原則?沒錯,就是封閉-開放原則,所以爲了能夠保持這個原則,我們就需要將工廠類進行抽象,然後在添加需求的時候,實現各個具體的工廠就行了。
四、實現
其他的大致和簡單工廠相似,只是工廠類不同,這裏只貼出工廠的修改部分
interface IFactory {
Operation CreateOperation();
}
public class AddFactory implements IFactory {
@Override
public Operation CreateOperation() {
return new OperationAdd();
}
}
public class Main {
public static void main(String[] args) {
IFactory factory = new AddFactory();
Operation operation = factory.CreateOperation();
operation.setNumA(2.1);
operation.setNumB(3.1);
operation.GetResult();
}
}