我想知道状态和策略两种模式的区别

Abib 2003-09-14 06:05:53
大虾烦请指点迷津,多谢
...全文
77 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
eagle19790214 2003-09-15
  • 打赏
  • 举报
回复
同意topbit
jeffyan77 2003-09-15
  • 打赏
  • 举报
回复
状态模式经常与策略模式相混淆。有的时候很难区分应当使用状态模式还是应当使用策略模式。

这个时候,一个简单的方法便是考察环境角色是否有明显的状态和状态的过渡。如果环境角色只有一个状态,那么就应当使用策略模式。策略模式的特点是一旦环境角色选择了一个具体策略类,那么在整个环境类的生命周期里它都不会改变这个具体策略类。而状态模式泽适用于另一种情况,即环境角色有明显的状态转移。在环境类的生命周期里面,会有几个不同的状态对象被使用。

另一个微妙的区别在于,策略模式的环境类自己选择一个具体策略类;而状态模式的环境类是被外在原因放进一个具体状态中。

策略模式所选的策略往往并不明显地告诉客户端它所选择的具体策略;而状态模式则相反,在状态模式里面,环境角色所处的状态是明显告诉给客户端的。
topbit 2003-09-15
  • 打赏
  • 举报
回复
解决的问题不同:
状态模式,解决内在状态的改变。
策略模式,解决内部算法的改变。

解决的方法不同:
状态模式,通常是自我控制状态的改变。
策略模式,由外部指定使用什么样的策略。

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧