摘要:
应用场景:在软件的构建过程中,对象的状态改变之后,对象的行为也会随之改变,如何在运行时根据对象的状态透明的更改对象的行为就是state模式解决的问题。实现代码: // 抽象类,表达状态的依赖状态行为 abstract class StateDocument { public abstract void Handler1(); public abstract void Handler2(); public abstract void Handler3(); public abstract StateDocument Next { get; set; } } class ReadOnlyState 阅读全文
posted @ 2010-07-24 20:13
qiang.xu
阅读(225)
评论(0)
推荐(0)
摘要:
应用场景:在软件的构建过程中,某些对象使用的算法可能多种多样,如果将这些算法直接编码到使用的类中的,这些类的维护旧就成为一个问题。解决的思路是“封装变化点”,将算法首先抽象出一个父类,然后在使用这些算法的类中只保留父类的引用,而传递的就是具体类。实现代码: class Program { static void Main(string[] args) { // 这里动态改变,动态更改算法。 Car car = new Car(new ProcessStrtategyA()); } } enum CarType { A, B, C, D } // 算法抽象 阅读全文
posted @ 2010-07-24 19:58
qiang.xu
阅读(195)
评论(0)
推荐(0)
摘要:
应用场景:在软件构建过程中,由于需求的变化,某些类层次常常需要新增加新的行为,如果直接改变基类的方法的话,将给子类的维护带来巨大的灾难。解决的思路是使用visitor模式,需要新增加方法的类是不需要改动的,只要实现相应的接口即可。这里是英文解释:Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it o 阅读全文
posted @ 2010-07-24 19:51
qiang.xu
阅读(194)
评论(0)
推荐(0)