设计模式(一)

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。设计模式一共有二十三种,每种设计模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在开发过程中不断重复发生的问题,以及该问题的核心解决方案。

 

1994年,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了《Design Patterns - Elements of Reusable Object-Oriented Software》,该书首次提到了软件开发中设计模式的概念。他们所提出的设计模式主要是基于一下的面向对象设计原则:

对接口编程,而不是对实现编程

优先使用对象组合,而不是继承

 

设计模式共分为三种,分别是创建型、结构型和行为型。

创建型设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用new运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更灵活。创建型设计模式有以下几种:工厂模式、抽象工厂模式、单例模式、建造者模式和原型模式

结构型模式关注类和对象的组合。继承的概念被用来组合结构和定义组合对象获得新功能的方式。结构型模式有以下几种:适配器模式、桥接模式、过滤器模式、组合模式、装饰器模式、外观模式、享元模式和代理模式

行为型模式关注对象之间的通信。行为型模式有以下几种:责任链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、空对象模式、策略模式、模板模式和访问者模式

 

设计模式中有六大原则。

(1)单一职责原则。具体体现为:接口尽量做到单一职责,类设计尽量只有一个原因引起变化。

(2)里氏替换原则。任何父类可以出现的地方,子类一定可以出现。子类尽量不要对父类中的方法进行重写或重载。因为父类代表了定义好的结构,是一个规范化的接口,软件通过这个接口与外界交互,子类不应该随便破坏它。

(3)接口分离原则。每个接口中不存在子类用不到但必须实现的方法。也就是说,接口中不应该有子类用不到的方法,如果有,那么应该进行接口分离。原则就是接口中的方法应该尽量少。

(4)依赖倒置原则。面向接口编程,依赖抽象而不依赖具体。也就是说,在调用的时候,不使用具体的子类,使用抽象的父类。

(5)迪米特法则。一个类对自己依赖的类知道的越少越好。也就是说,如果接口对外提供一个功能,这个功能是由很多个步骤完成的(体现为接口中的很多个方法),那么接口应该只对外提供一个方法的调用,而在这个方法的内部将其他方法的调用进行步骤的封装。这样当接口改变的时候,子类收到的影响才会最小。

(6)开闭原则。对修改关闭,对拓展开放。以上五个原则都是开闭原则的具体实现。

 

下一篇:设计模式(二)——简单工厂模式

你可能感兴趣的:(设计模式)