-
UML图:
-
简单工厂模式集齐了面向对象设计的继承,封装与多态的三大特性。
- 继承:每一个具体的operation类提取出共同的属性以及方法然后封装成一个Operation类。
- 封装:具体操作方法的产生封装在简单工厂类中,简单工厂类与Operation类耦合,客户端只需要通过工厂就能够知道产生具体的Operation类。
- 多态:表现在继承Operation类的各个具体的加减乘除操作中,再简单工厂类中new的是Operation基类对象,然后将具体的操作赋值给基类对象,在调用基类对象的方法时就会表现出各个子类的特性。
- UML图
-
通过策略模式和工厂模式的结合,可以将算法的变化封装在Context类中,然后客户端只需要面对具体的Context对象进行操作就行了。相比于单一的策略模式或者简单工厂模式而言,能够将整个变化封装起来,用来解耦。
-
简单工厂模式:将对象的选择创建交给了简单工厂类,客户端只需要输入相应的条件就可以,不用负责对象的创建,但是需要客户端自己调用算法类的方法。但是一旦需要增加新的运算类,比如开根运算,就要去修改简单工厂类。策略模式:对象的选择创建仍需要自己来做,但是将调用方法的职责交给了Context类。一旦需要增加新的策略需要修改客户端。因此,简单工厂模式的缺点就是当有新的需求增加时,需要频繁的修改工厂类。只用策略模式,当有新的需求增加时需要修改的是客户端,客户端仍然承担着创建对象的职责,并没有减轻客户端的压力。而将这两种模式结合起来使用,则需要修改 Context 类,总之不是完美的。转载自https://blog.csdn.net/zwj_jyzl/article/details/80869905
-
UML图