简单工厂模式
就我们的计算器例子来说,简单工厂模式的思想就是,创建一个运算类,创建一个简单工厂类。
运算类派生加法类、减法类、乘法类......
简单工厂类主要是根据传入的符号字符串,做相应的条件判断来创建相应的运算对象。
当我们需要增加运算功能的时候,需要在运算类中派生相应的运算子类,在简单工厂类中增加相应的条件判断。
【在简单工厂类中增加相应的条件判断】这一来就违反了设计模式的OCP原则!于是,工厂方法模式就解决了这一问题。
工厂方法模式
工厂方法模式的思想是,创建一个运算类,创建一个工厂类。
运算类派生加法类、减法类、乘法类......
工厂类派生相应的加法工厂,减法工厂、乘法工厂........
实质上就是,把简单工厂类中“根据传入的符号字符串,做相应的条件判断来创建相应的运算对象”,分担到每个派生类里面,在每个派生工厂类里面进行相应的运算对象生成操作。
这样一来,以后我们要增加一个运算功能的时候,就只需要增加运算派生类、增加派生的工厂类即可,而不需要去修改工厂基类的的内容,体现了多扩展,少修改的原则。