策略模式就是定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。
策略模式涉及的角色
抽象策略角色:通常用一个抽象类或者接口来实现,主要是定义这个算法所完成的功能。
具体策略角色:包装了相关算法和行为。
环境角色:持有策略类的引用。
策略模式的优点:
提供管理相关算法族的办法。
提供可替代继承关系的办法。
避免了使用多重条件判断语句。
策略模式的缺点:
客户端必须知道所有的策略类,自己去决定使用那一个
生成许多的策略类。
使用场合
1、系统有许多类,而他们的区别仅仅在于它们的行为。
2、动态选择几种算法中的一种。
3、一个对象有很多行为。
实现步骤
1、定义抽象角色类,定义好各个实现的共同抽象方法。
2、定义具体策略类,具体实现父类的共同方法。
3、定义环境角色类,私有化申明抽象角色变量, 重载构造方法, 执行抽象方法。
策略模式-状态模式/模版模式的区别
状态模式侧重状态方面,一般不会接受新的状态对象,即系统已经定义足够的状态。策略侧重不同的行为的改变在统一的接口下,强调多态下面行为的执行过程,处理过程,可以从用户那里接受参数,只要用户提供的策略符合接口。
模版模式就是算法在父类中,子类不会完全改写算法,可以改写部分,或称关键部分,但整体的算法不变,可以节省大量代码。策略模式所有的算法均在子类中完成,强调行为即算法的不同,可以使程序更灵活。
策略模式的应用
1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态的让一个对象在许多行为中选择一种行为。
2、如果系统需要动态地在几种算法中选择一种。那么这些算法可以包装到一个个的具体算法类里面,而这些算法类都是一个抽象算法类的子类。
3 、一个系统的算法使用的数据不可以让客户端知道。策略模式可以避免让客户端涉及到不必要接触到的复发的和只与算法有关的数据。
策略模式
最新推荐文章于 2022-07-14 15:23:59 发布