.NET中的设计模式 - 策略模式&状态模式
2010-10-28 13:31:28 来源:WEB开发网核心提示:答案二”不是”:很显然四人组比我们绝大多数人水平高的多,相比之下,我们出错的几率比他们高的多.那么这两种设计模式的区别到底在哪呢?看过书大家都知道策略模式和状态模式都属于Gof23种设计模式中的行为模式.二者外表一样,只是二者的关注点不一样.策略模式关注行为的变化,状态模式关注对象状态的变化如何
答案二”不是”:很显然四人组比我们绝大多数人水平高的多,相比之下,我们出错的几率比他们高的多.那么这两种设计模式的区别到底在哪呢?
看过书大家都知道策略模式和状态模式都属于Gof23种设计模式中的行为模式.二者外表一样,只是二者的关注点不一样.策略模式关注行为的变化,状态模式关注对象状态的变化如何导致对象行为的变化.
策略模式中的两个角色:客户和策略.客户的职责是了解行为的差别,定义同一的接口.策略的职责是提供不同的实现,并根据客户的意图来选择.至于有多少种行为,一般很难知道,因为随着发展会有不同的变化加入.现实中一个简单的例子就是根据客户的要求选择不同的加密算法.当有新的加密算法出现时,客户需要知道这个变化,此时策略此可以灵活的选择使用新的算法.
状态模式一个形象的比喻是”饱了睡,饿了吃”.在这里”饱和饿”是两种状态,”睡和吃”是两种行为.另外一个典型的例子是银行账户.根据客户账户中余额的不同用户可以有不同的操作行为.这里要注意到,状态模式中状态与行为的对应关系.虽然不是一一对应,但潜藏了一些信息,那就是实际例子中行为与状态的有限和稳定,行为的唯一性.有限和稳定是指对象的行为一般就那几种,除非业务需求变动,否则不会发生改变.唯一性只是对象只有一个吃的行为,二不会有第二个吃的行为.
这时候策略模式与状态模式之间的区别就清楚了.
策略模式关注行为的变化,但归根结底只有一个行为,变化的只是行为的实现.客户不关注这些.当新增变化时对客户可以没有任何影响.
状态模式同样关注行为的变化,但这个变化是由状态来驱动,一般来说每个状态和行为都不同.新增的状态或行为一般与已有的不同,客户需要关注这些变化.
Tags:.NET中的设计模式 - 策略模式&状态模式
编辑录入:爽爽 [复制链接] [打 印]- ››.NET中的设计模式 - 策略模式&状态模式
- ››Netpas加速 让非电信宽带用户流畅上网
- ››net中fckediter的图片上传时候点击\浏览服务器\出...
- ››Netmsg局域网聊天程序
- ››NetAirus指控苹果iPhone侵犯其专利
- ››Netflix 在线影视播放程序将登陆 iPhone
- ››Net中各种不同的对象创建方式的速度差异
- ››NetNewsWire 功能简单 界面快速 Reader 浏览器
- ››NET-使用Js调用WebService
- ››Net 应用程序如何在32位操作系统下申请超过2G的内...
- ››NET 4.0新特性-- Corrupted State Exceptions
- ››NET应用程序的本地化及RESGEN.exe, AL.exe介绍
更多精彩
赞助商链接