Hi Phone Chan home

设计模式简介

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编制真正工程化。设计模式提供了一套术语方便开发人员之间的交流,但是不能滥用设计模式,导致设计过度。


设计原则

面向对象开发设计需要遵循一下的原则:

开闭原则(Open Closed Principle,OCP)

软件应当对扩展开放,对修改关闭。

依赖倒转原则(Dependency Inversion Principle,DIP)

  1. 高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
  2. 抽象不应该依赖于具体,具体应该依赖于抽象。

这个原则反转两个字需要从设计的角度去理解,很多时候接口的抽象都依赖于具体的应用,导致增加一个具体应用就增加一个接口,这其实是不符合依赖倒转原则的。 依赖倒转原则的重要应用就是控制反转(Inversion of Control, IoC)一般分为两种类型,依赖注入(Dependency Injection, DI)和依赖查找(Dependency Lookup)。

接口隔离原则(Interface Segregation Principle,ISP)

一个类对另外一个类的依赖性应当是建立在最小的接口上。使用多个专门的接口比使用单一的总接口要好。

合成/聚合复用原则(Composite/Aggregate Reuse Principle,CARP)

合成复用原则是指尽量使用合成/聚合,而不是使用继承。首先要区分区分Has-A和Is-A的关系,然后当满足以下的条件时,才使用继承关系。

  1. 子类具有扩展超类的责任,而不是具有置换掉或注销掉超类的责任。
  2. 不会出现需要将子类换成另外一个类的子类的情况。

最小知识原则(Principle of Least Knowledge,PLK,也叫迪米特法则Law of Demeter)

每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。迪米特法则的初衷在于降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。


常用模式

常用的设计模式可分为三种类型,分别为创建型模式、结构型模式和行为型模式。

建型模式

结构型模式

行为型模式


各模式之间的关系下图

relationship

参考

百度百科 http://blog.csdn.net/longronglin/article/details/1454315

top
Fork me on GitHub