摘要: 策略模式的类图和状态模式是一样的,但两个模式的区别在于他们的“意图”以策略模式而言,客户通常主动制定Context所要组合的策略对象是哪一个。现在,固然策略模式让我们更有弹性,能够在运行时改变策略,但对于某个context对象来说,通常都只有一个最适当的策略对象。一般来说,我们把策略模式想成是除了继承之外的一种弹性方案。如果你使用继承定义了一个类的行为,你将被这个行为困住,甚至要修改它都很难。有了策略模式,你可以通过组合不同的对象来改变行为。而状态模式,通过将一群行为封装在状态对象中,context的行为随时可委托到那些状态对象中的一个。随着时间的流逝,当前状态在状态对象集合中游走改变,以反映 阅读全文
posted @ 2013-12-14 21:27 feiling 阅读(180) 评论(0) 推荐(0)
摘要: 1.找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起2.针对接口编程,而不是针对实现编程3.多用组合,少用继承4.最少知识原则(Law of Demeter):只和你的密友谈话,减少对象之间的交互。(外观模式) 该原则提供了一些方针:就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法: a.该对象本身 b.被当做方法的参数而传递进来的对象 c.此方法所创建或实例化的任何对象 d.对象的任何组件5.好莱坞原则:别调用我们,我们会调用你(模板方法模式) 该原则运行底层组件将自己挂钩到系统上,但是高层组件会决定什么时候和怎样使用这些底层组件。... 阅读全文
posted @ 2013-12-14 11:36 feiling 阅读(191) 评论(0) 推荐(0)
摘要: 状态模式允许对象在内部状态改变时改变他的行为,对象看起来好像修改了它的类1.将每个状态的行为局部化到它自己的类中2.将容易产生问题的if语句删除,以方便日后的维护3.让每一个状态“对修改关闭”,让Context“对扩展开放”,因为可以加入新的状态类 阅读全文
posted @ 2013-12-14 11:25 feiling 阅读(147) 评论(0) 推荐(0)