美文网首页
策略模式

策略模式

作者: 阿西Enzo | 来源:发表于2019-01-23 09:40 被阅读0次

策略模式

[TOC]

类型

行为型模式

简介

一个类(Context)的行为或算法(Strategy)可以在运行时进行改变

解决问题

多算法相似情况下,避免if...else 写法,降低系统复杂度

解决办法

类似算法封装为实现统一接口的策略类,context按需动态切换需要的strategy

UML

理解

  1. 策略超过4个,可以考虑使用混合模式,避免策略类膨胀

  2. 抽象行为后,针对不同情况可以动态切换策略(context判断如何选择策略,不在该模式讨论范围,可以参考一下状态模式)

引用:

与状态模式的比较
状态模式的类图和策略模式类似,并且都是能够动态改变对象的行为。但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。所谓的状态转移,是指 Context 在运行过程中由于一些条件发生改变而使得 State 对象发生改变,注意必须要是在运行过程中。

状态模式主要是用来解决状态转移的问题,当状态发生转移了,那么 Context 对象就会改变它的行为;而策略模式主要是用来封装一组可以互相替代的算法族,并且可以根据需要动态地去替换 Context 使用的算法。

相关文章

网友评论

      本文标题:策略模式

      本文链接:https://www.haomeiwen.com/subject/xytjjqtx.html