摘要: 整个设计模式的学习是通过msdn webcast来进行的,首先感谢“李建忠”老师辛勤的讲解(这个视频教程的时间可能是比较老的,好像是05年东西),但是通过整个教程的学习,感觉还是收获很多,对于面向对象有了更深的理解。下面是整个设计模式的总结:Creational PatternsAbstract FactoryCreates an instance of several families of classes,解决的多系列对象创建问题。BuilderSeparates object construction from its representation 阅读全文
posted @ 2010-07-24 20:53 qiang.xu 阅读(739) 评论(0) 推荐(0) 编辑
摘要: 应用场景:在软件的构建过程中,对象的状态改变之后,对象的行为也会随之改变,如何在运行时根据对象的状态透明的更改对象的行为就是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 阅读(216) 评论(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 阅读(188) 评论(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 阅读(183) 评论(0) 推荐(0) 编辑