分享

设计模式-起航篇

 码农9527 2021-11-18

 前言

  设计模式其实就是前人们的在开发过程中总结出来的对特定问题的解决方案。设计模式和编程语言没有必然的联系,它的目的是解决代码可复用性、可维护性、可扩展性、可读性、稳健性以及安全性。

  GOF-23种设计模式

  1994年,Erich Gamma、Richard Helm、Ralph Johnson与John Vlissides撰写了Design Patterns:Elements of Reusable Object-Oriented software(设计模式可复用面向对象软件的基础)这本书,书中介绍了23种设计模式,也是Java程序员口中常提的设计模式,但实际的设计模式远超23种。那GOF又是什么?它是上面提到的四位作者的合称(Gang of Four 四人帮)。

  面向对象编程和面向对象设计原则

  相信对设计模式有一定了解的老铁肯定有听过5种、6种和7种的版本。

  其实最开始的设计原则是5种,也叫SOLID原则,也是下列表格中前五种原则的英文首字母组合。

  而6种原则是在5种的基础上增加了迪米特法则,也是现在绝大多数书中的所讲的版本。

  7种则是在6种的基础上增加了合成复用原则,但是7种存在一些争议,到底是坚持6种还是7种就仁者见仁智者见智了。

设计原则名称
定义

单一职责原则(Single Responsibility Principle, SRP)

一个类只负责一个功能领域中的相应职责

开闭原则(Open-Closed Principle,

OCP)

软件实体应对扩展开放,对修改关闭,程序需要进行扩展时,不能修改源代码,实现热插拔效果

里氏代换原则(Liskov Substitution

Principle, LSP)

所有引用基类对象的地方能够透明地使用其子类的对象

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

使用多个专门的接口,而不使用单一的总接口

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

开闭原则的基础,面向接口编程,依赖抽象而不依赖具体

合成复用原则(Composite Reuse

Principle, CRP)

尽量使用对象组合,而不是继承来达到复用的目的

迪米特法则(Law of Demeter, LoD)

一个实体应当尽可能少地与其它实体发生相互作用

  学设计模式有什么用

  学设计模式的原因我觉得基本逃不开以下这四点:

  应付面试(最直观的点)

  为了炫技

  提升个人编码内功

  为了更好的理解开源框架设计思想

  ...

  GOF-23设计模式类型

  在GOF-23设计模式中,对23种设计模式进行了分类,分别为创建型、结构型和行为型。

  创建型:强调的是对象创建的模式,而不是直接实例化对象。

  结构型:关注类和对象的组合,使用继承来组合接口并定义组合对象以获得新功能的方法。说的再白一点就是通过组合类或对象形成新的数据结构去解决更为复杂的需求。

  行为型:关注对象之间的通信。

  讲到这里,肯定有人会说23种设计模式到底是哪23种。别急,下面就给大家附上图。

  以上所介绍的内容大家也都可以在wiki百科中找到,地址如下:

  地址:

  https://en./wiki/Design_Patterns

  总结

  好了,本文到此也就结束了,最后咱们来一个总结回顾下上面的知识点。

  通过本篇文章我们可以学到如下几点:

  什么是设计模式

  什么是GOF-23设计模式

  面向对象编程和面向对象设计原则

  学设计模式有什么用

  GOF-23设计模式种类划分

  最后再给大家多提一嘴,Java设计模式也是指的GOF-23设计模式,但是这种叫法是不对的。静态语言和动态语言以及各种语言的特性,并不是所有的设计模式跨语言使用都是合适的,有些设计模式刚诞生的时候是跟作者当时所用的语言有一些关联,但是换到其它语言也许会有其它的解决方案,这一点也是大家需要注意的。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多