设计模式原则和分类

SOLID原则

单一职责原则(SRP)

the single responsibility principle, 一个类只做一种类型的责任。

开闭原则(OCP)

the open closed principle,对扩展开放,对修改关闭。

里氏代换原则(LSP)

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

依赖倒转原则(DIP)

the dependency inversion principle,针对接口编程,依赖于抽象而不依赖于具体。

  1. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
  2. 抽象不应该依赖于细节,细节应该依赖于抽象

接口隔离原则(ISP)

the interface segregation principle,使用多个隔离的接口,比使用单个接口要好。
一个类对另一个类的依赖应该限制在最小化的接口上。不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。
客户模块不应该依赖大的接口,应该裁减为小的接口给客户模块使用,以减少依赖性。如Java中一个类实现多个接口,不同的接口给不用的客户模块使用,而不是提供给客户模块一个大的接口。

迪米特法则(最少知道)

一个实体应当尽量少的与其他实体之间发生相互作用。迪米特法则还有一个更简单的定义:只与直接的朋友通信。首先来解释一下什么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖、关联、组合、聚合等。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。也就是说,陌生的类最好不要作为局部变量的形式出现在类的内部。

合成复用原则

尽量使用合成/聚合,而不是继承。组合/聚合和继承是实现复用的两个基本途径。合成复用原则是指尽量使用合成/聚合,而不是使用继承。


设计模式分类

创建型模式,共五种:

工厂方法模式 详解
抽象工厂模式 详解
单例模式 详解
建造者模式 详解
原型模式 详解

结构型模式,结构型模式是为解决怎样组装现有的类,设计他们的交互方式,从而达到实现一定的功能的目的,共七种:

适配器模式 详解
装饰器模式--统一接口,构造器接口注入实例,装饰注入实例 详解
代理模式--代理和实现类继承一个接口,代理持有实现类对象,访问代理 详解
外观模式--新建facade类,包装多个子系统 详解
桥接模式
组合模式
享元模式
结构型模式包容了对很多问题的解决。例如:扩展性(外观、组成、代理、装饰)封装性(适配器,桥接),结构型模式处理类或对象的组合,它采用继承机制来组合接口或实现(类结构型模式),或者通过组合一些对象,从而实现新的功能(对象结构型模式)。

行为型模式,对类或对象怎样交互和怎样分配职责进行描述,共十一种:

  1. 父类与子类关系: 策略模式、模板方法模式(模板方法父类规定流程,子类各自实现细节,策略模式完全对等,任意使用)详解
  2. 两个类之间关系: 观察者模式、迭代子模式、责任链模式、命令模式详解
  3. 类的状态: 备忘录模式、状态模式
  4. 通过中间类: 访问者模式、中介者模式、解释器模式

其实还有两类:并发型模式和线程池模式。

posted @ 2015-09-24 10:22  toto怎么会喝醉  阅读(149)  评论(0编辑  收藏  举报