设计模式中的原则
核心原则是:开放封闭原则。
实现方法:面向接口编程。对接口的修改封闭,对实现的修改开放。
面向接口编程,遵循的是依赖倒置原则,实现上要求支持里氏替换原则。
对接口的设计要遵循最小接口原则、迪米特法则。
通过组合、聚合复用已有对象的功能。
通过继承隔离变化。
典型模式要点
factory模式,封装了单个对象的构造过程。使用者只看到接口,不用看到具体的实现。
abstract factory 模式,封装了一系列、多个对象的构造。
builder模式,应用于复杂对象的构建,将构建分解为多个步骤,每个步骤都可变化。
其它模式:Singleton,Prototype
bridge模式:适用于两个纬度的变化。 抽象类加继承支持一个纬度的变化。 桥模式将接口和实现通过组合的方式联系,实现了解耦。
composite和decorator模式:两者有一个共同的特性,从抽象接口派生出不同功能的子类。composite模式从component派生出leaf和composite, decorator模式派生出concreteComponent和Decorator。这样达到了接口一致,功能对客户透明的目的。
visitor模式提供了一种类似回调函数的机制,在结构不变的情况下,提供了功能扩展的通道。
Adapter, Proxy:通过组合,将外部的访问进行转换。
其它模式:Facade,Flyweight
Command,state,strategy模式类似,依次封装的是:命令、状态、算法。通过接口和特化实现对变化的封装。先定义多个实例,在context中选择具体的实例。
Observer, Chain of Responsibility:处理一对多的关系。前者需要多个对象都做出响应,后者只需要从多个对象中选择一个进行处理。
Mediator:处理多个对象相互访问的关系。
Iterator:提供对象内部元素的访问。
Template Method:封装对象行为子步骤的的变化。
其它模式:Interpreter,Memento。
设计模式学习资料
李建忠,“C#面向对象设计模式纵横谈系列课程”
吕震宇,“C#设计模式”