最近有一位朋友向我推荐了一本书《大话设计模式》,这本书刚刚送到手上,我还没开始阅读,希望通过博文的方式与大家一起分享,一起学习。
简单工厂模式的核心思想是,将创建对象的过程封装在一个单独的类中,这样就可以通过这个类来实例化不同的对象。例如,如果我们需要增加开根运算等新的运算类型,我们只需要在这个类中进行扩展即可,这就是工厂模式的魅力所在。让我们来看看这个类的实现方法。
简单运算工厂类如下所示:
class OperationFactory { static createOperate(operate) { let oper = null; switch (operate) { case "+": oper = new OperationAdd(); break; case "-": oper = new OperationSub(); break; case "*": oper = new OperationMul(); break; case "/": oper = new OperationDiv(); break; } return oper; } }
通过这个工厂类,我们只需要输入运算符号,工厂就会实例化出相应的运算对象。利用多态性,通过返回父类的方式,我们可以实现计算器的功能。
客户端代码的实现如下:
let oper; oper = OperationFactory.createOperate("+"); oper.NumberA = 1; oper.NumberB = 2; let result = oper.GetResult();
无论你是编写控制台程序、Windows程序、Web程序、PDA还是手机程序,都可以使用这段代码来实现计算器的功能。如果有一天我们需要更改加法运算,我们只需要修改OperationAdd类即可。同样,如果我们需要增加其他复杂的运算,比如平方根、立方根、自然对数、正弦和余弦等,我们只需要增加相应的运算子类,并在工厂类的switch语句中增加新的分支即可。
不知不觉已经写到了结尾,这就是简单的工厂模式。以下是几个类的结构图,供大家参考。
设计模式还有很多,期待后续的更新。