关于实验中使用的一些设计模式的理解(2)

今天我们来总结一下另一种常用的设计模式,在lab3、lab4、lab6中都有用到,那就是策略模式

策略模式

策略模式和简单工厂模式有很多相似之处,但设计的出发点却不太相同,引用某位大佬的总结:

简单工厂模式是创建型模式,简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建并且返回哪一个产品类(这些产品类继承自一个父类或接口)的实例。

那么也就是说:
1、有已知的产品类
2、你无法准确的知道编译哪个产品类
3、需要在运行时决定创建哪个产品类
4、产品类不多

很明显看出,在创建对象上的灵活性高,但是工厂类只能创建可能会使用到的产品类,假如新添了产品类就得修改工厂类。

策略模式是行为型模式,它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

那么也就是说:
1、某方法里有多个条件语句,条件语句代码块里有许多行为过程。
2、其算法能封装到策略类
2、算法随意切换
3、算法与客户端隔离

在一段代码里,使用了逻辑控制(if-else,swich-case)来决定算法,算法有相似的方法和函数,就可以选择策略模式。

虽然说起来很复杂,其实实现起来相当简单
在这里插入图片描述
UML图非常容易理解,只需要将相似的算法封装在不同的类中,由一个接口统一管理,在使用时根据不同情况挑选合适的类来实现算法就可以了。

总结:分离可变性与不变形

使用这个设计思想的核心是将常变化的与不常变化的分离开(如属性与行为),面向接口编程(成员属性接口实现多态)而不是面向实现类编程,方便根据不同类设置不同的行为;多用组合,少用继承,以提高代码复用性。

猜你喜欢

转载自blog.csdn.net/u013551670/article/details/91047953
今日推荐