设计原则

开闭原则(OCP)

OCP,open-close principle,一个软件实体应当对扩展开放,对修改关闭。

做到“开-闭”原则不是一件容易的事情,但是又很多规律可循。这些规律同样以设计原则的身份出现, 但是它们都是“开-闭”原则的工具和手段,是附属于“开-闭”原则的。【注-1】

里氏替换原则

任何基类可以出现的地方,子类一定可以出现。

依赖倒转原则

要依赖于抽象,不要依赖于实现。

组成/聚合复用原则

尽量使用组合/聚合,而不是继承。

迪米特法则

一个软件实体应尽可能减少和其它实体发生相互作用

接口隔离原则

应当为客户端提供尽可能小的接口,而不要提供大的总接口

设计模式分类

1.创建设计模式

创建设计模式(Creational design patterns),这些模式都是跟类的实例化信相关。其实可以进一步分为类的创建和对象的创建。 类的创建通过继承来完成实例化过程,对象的创建通过授权来完成相关目标。 These design patterns are all about class instantiation. This pattern can be further divided into class-creation patterns and object-creational patterns. While class-creation patterns use inheritance effectively in the instantiation process, object-creation patterns use delegation effectively to get the job done.

1.1 抽象工厂

Abstract Factory:Creates an instance of several families of classes

1.2 建造模式

Builder:Separates object construction from its representation

1.3 工厂方法

Factory Method:Creates an instance of several derived classes

1.4 对象池

Object Pool:Avoid expensive acquisition and release of resources by recycling objects that are no longer in use

1.5 原始模型

Prototype:A fully initialized instance to be copied or cloned

1.6 单例模式

Singleton:A class of which only a single instance can exist

2. 结构设计模式

结构设计模式 (Structural design patterns),描述如何将类或者对象结合在一起形成更大的结构。 分为 类的结构模式 和 对象的结构模式

  • 类的结构模式 类的结构模式使用继承来把类、接口等组合在一起,以形成更大的结构。当一个类从父类继承并实现某接口时, 这个心的类就把父类的结构和接口的结构结合起来。类的结构模式是静态的。
  • 对象的结构模式 对象的结构模式描述怎样把各种不同的类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的。

These design patterns are all about Class and Object composition. Structural class-creation patterns use inheritance to compose interfaces. Structural object-patterns define ways to compose objects to obtain new functionality.

2.1 适配器

Adapter:Match interfaces of different classes

2.2 桥接模式

Bridge:Separates an object’s interface from its implementation

2.3 组件模式

Composite:A tree structure of simple and composite objects

2.4 装饰模式

Decorator:Add responsibilities to objects dynamically

2.5 门面模式

Facade:A single class that represents an entire subsystem

2.6 享元模式

Flyweight:A fine-grained instance used for efficient sharing

2.7 私有类数据

Private Class Data:Restricts accessor/mutator access

2.8 代理模式

Proxy:An object representing another object, 详见博文:《代理模式》。

3. 行为型设计模式

行为型设计模式 (Behavioral design patterns), These design patterns are all about Class’s objects communication. Behavioral patterns are those patterns that are most specifically concerned with communication between objects.

3.1 责任链模式

Chain of responsibility:A way of passing a request between a chain of objects

3.2 命令模式

Command:Encapsulate a command request as an object

3.3 解释器模式

Interpreter:A way to include language elements in a program

3.4 迭代子模式

Iterator:Sequentially access the elements of a collection

3.5 中介者模式

Mediator:Defines simplified communication between classes

3.6 Memento

Memento:Capture and restore an object’s internal state

3.7 Null Object

Designed to act as a default value of an object

3.8 观察者模式

Observer:A way of notifying change to a number of classes

3.9 状态模式

State:Alter an object’s behavior when its state changes

3.10 策略模式

Strategy:Encapsulates an algorithm inside a class

3.11 模板方法

Template method:Defer the exact steps of an algorithm to a subclass

3.12 访问者模式

Visitor:Defines a new operation to a class without change

参考资料