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

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

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

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

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

解决的方法不同:
状态模式,通常是自我控制状态的改变。
策略模式,由外部指定使用什么样的策略。
1) 优秀的程序应该是这样的:阅读时,感觉很优雅;新增功能时,感觉很轻松;运行时,感觉很快速,这就需要设计模式支撑。2) 设计模式包含了大量的编程思,讲授和真正掌握并不容易,网上的设计模式课程不少,大多讲解的比较晦涩,没有真实的应用场景和框架源码支撑,学习后,只知其形,不知其神。就会造成这样结果: 知道各种设计模式,但是不知道怎么使用到真实项目。本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,比如 单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等3) 如果你写出规范、漂亮的程序,就花时间来学习下设计模式吧课程内容和目标本课程是使用Java来讲解设计模式,考虑到设计模式比较抽象,授课采用 图解+框架源码分析的方式1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种实现)、抽象工厂模式、原型模式、建造者模式、工厂模式。结构型模式:适配器模式(3种实现)、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式(3种实现)。行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter模式)、状态模式策略模式、职责链模式(责任链模式)2) 学习目标:通过学习,学员能掌握主流设计模式,规范编程风格,提高优化程序结构和效率的能力。

50,523

社区成员

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

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