设计模式及六大设计原则简介

设计模式及六大设计原则简介

1. 设计模式简介

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。是软件开发人员在软件开发过程中面临一般问题的解决方案,这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性,使代码编写真正工程化。

2. 什么是GOF(四人帮,全拼 Gang of Four)

在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 《Design Patterns - Elements of Reusable Object-Oriented Software》(中文译名:设计模式 - 可复用的面向对象软件元素) 的书。

四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则:

  • 对接口编程而不是对实现编程。
  • 优先使用对象组合而不是继承。

3. 六大设计原则

3.1 开放封闭原则 OCP

(Open-Closed Principle)

一个软件实体(类,模块和函数)应该对扩展开放,对修改关闭。开闭原则也是其他五个原则的基石。

3.2 单一职责原则 SRP

(Single Responsibility Principle)

一个 类/方法/接口 应该只有一个引起发生变化的原因。即:一个 类/方法/接口 只承担一个职责。

3.3 接口隔离原则 ISP

(Interface Segregation Principle)

客户端不应该依赖它不需要的接口,即:不要对外暴露没有实际意义的接口。

一个类对另外一个类的依赖性应当是建立在最小的接口上的,即:建立单一接口,不要建立臃肿庞大的接口,也就是接口尽量细化,接口中的方法尽量少。

3.4 依赖倒置原则 DIP

(Dependence Inversion Principle)

要依赖于抽象, 不要依赖于具体,面向接口编程,提取出事务的本质和共性。即:高层模块不应该依赖于底层模块,而应该依赖于抽象。应该面向接口编程,不该面向实现类编程。面向实现类编程相当于就事论事,那是正向依赖;面向接口编程,相当于透过现象看本质,抓住事务的共性,那就是反向依赖,即依赖倒置。

3.5 里氏代换原则 LSP

(Liskov Substitution Principle)

是继承复用的基石。只有当衍生类可以替换掉基类,软件单位的功能不会受到影响时,基类才能真正被复用,而衍生类也才能够在基类的基础上增加新的行为。反过来的代换不成立。即:只要父类出现的地方子类就一定可以出现,而且替换为子类也不会出现任何异常或错误,使用者不需要知道是父类还是子类,但是返回来就不行了,有子类出现的地方,不一定能使用父类。

3.6 迪米特法则 DP

(Demeter‘s Principle)也叫最少知识原则(Least Knowledge Principle 或简写为 LKP)

一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。即:做到低耦合、高内聚。

4. 设计模式的种类

模式类型 用途 模式名称
创建型模式(5种) 提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式(7种) 关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器模式、装饰器模式、代理模式、门面模式、桥接模式、组合模式、享元模式。
行为型模式(11种) 关注对象之间的通信。 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

参考链接

菜鸟教程-设计模式

设计模式六大原则

学习6大设计原则、23种设计模式

设计模式之设计原则

最后,谢谢各位读者的耐心阅读,如有语句不通顺或者不准确的地方,还请指正!谢谢!(__)

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