美文网首页
什么是设计模式?程序员如何学好设计模式?

什么是设计模式?程序员如何学好设计模式?

作者: 程序兔子 | 来源:发表于2021-12-01 13:42 被阅读0次

编程的痛点

那么,到底什么是设计模式呢?

在介绍这个概念之前,我先问问大家,在你们的工作当中,有没有接手过“祖传代码”?也就是老板让你维护前一任程序员写的老项目。

自己做过10年的程序员,有过很多次这样的经历。这些个祖传代码,有相当一部分压根儿不知道写的是什么,注释非常少,结构也很混乱,不敢修改也不敢删除。

当初写下这些代码的前任,要么已经离职了,根本找不到人来问。

就算他还在职,能找到人,想问对方一点代码的问题,也还得看对方的脸色。

这就是祖传代码的痛苦。

设计模式是什么

我们该怎么办呢?

许多前辈程序员经过长期实践,总结出了一系列的解决方案。这些解决方案可以提高代码的可读性,增加代码的可重用性,保证代码的可扩展性。

这一系列解决方案,被人们称为设计模式,它是面向对象编程当中的各种经典套路。

设计模式是一种抽象的编程思想,并不局限于某一特定的编程语言,而是在许多语言之间相通的。比如在Java、C#、C++语言当中,都可以使用到设计模式。

但设计模式也有它的边界,它的适用范围是面向对象的编程语言。对于面向过程语言、函数式编程语言,谈论设计模式是没有意义的。

如果有人跟你说,Fortran语言当中的设计模式非常好用,或者说自己在学习Lisp语言当中的设计模式,这人一定是一个假程序员。

设计模式的分类

那么,程序员前辈们一共总结出了多少种设计模式呢?

在1995年,有四位编程界的大佬合著了一本书,书名叫做《Design Patterns: Elements of Reusable Object-Oriented Software》,翻译过来就是《设计模式:可复用面向对象软件的基础》,书里面总共收录了23种设计模式。

这本书是软件研发领域重要的里程碑,合著此书的四位作者,被业内称为GoF(Gang of Four),因此这本书也被人称为GoF设计模式。

这23种设计模式,又可以根据设计的目的,分为大大类型:

第一类:创建型模式

这一类设计模式的目的是用于创建对象。比如大家常用的工厂模式、单例模式,就属于创建型模式。

第二类:结构型模式

这一类设计模式的目的是优化不同类、对象、接口之间的结构关系。比较常用的代理模式、装饰者模式,就属于结构型模式。

第三类:行为型模式

这一类设计模式的目的是更好地实现类与类之间的交互以及算法的执行。比如策略模式、观察者模式,就属于行为型模式。

下面这张图,总结了所有23种设计模式的分类,大家可以收藏一下。 

可能有的人会觉得疑惑:网上有很多程序员总是说到24种设计模式,你这里怎么只说了23种呢?

其实,这两种说法都没错,24种设计模式是在原有23种的基础上,补充了一个空对象模式,它属于行为型模式。

此外,随着编程领域的不断发展,有很多新的设计模式不断被人提出来,目前人们所用到的设计模式其实远远不止24种。

比如生产者消费者模式,发布订阅模式等等,他们都不在24种设计模式当中,但仍然非常常用。

可能有些做后台开发的朋友会问了:我们平时用到的MVC模式,是不是也属于设计模式呢? 

以我个人的观点,设计模式所研究的是类与对象、接口之间的关系,解决的是某一个特定问题。

而MVC,研究的是代码模块之间的关系,并且提供的是一揽子解决方案。所以MVC属于一种架构,而不是设计模式。

如何学习设计模式

那么,我们怎么才能学好设计模式呢?

就像学习算法和数据结构一样,我们可以通过看书、看网上的视频课程,来了解各种设计模式的思想和实现。

入门级别的书,比较推荐程杰老师的《大话设计模式》。

进阶级别的书,推荐看看《Head First 设计模式》这本书。

课程的话,推荐极客时间王争老师的《设计模式之美》,同时在B站上也有一些比较优质的设计模式课程,大家可以观看教学视频学习。

与此同时,大家也可以多看看一些经典框架的源码,里面也采用了很多的设计模式。比如Java程序员常用的Spring框架,里面就使用了工厂模式、代理模式、单例模式、适配器模式等等。

这样既能熟悉框架的原理,也能加深对设计模式的理解,可谓是一举两得。

大家都是通过哪些途径学习的设计模式?欢迎写在留言区。

相关文章

  • 23种设计模式学习总结-第一遍

    如何学? 置顶:轮子哥指导如何学习“设计模式” 什么是设计模式? 设计模式推荐书籍w3c设计模式详解23中设计模式全解析

  • 面向对象:6大原则、24种设计模式

    接上一篇:面向对象介绍 为什么要学设计原则、设计模式? 若不学好经典设计模式,和通过设计模式理解面向对象的原则,你...

  • 设计模式七大原则

    设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础,即设计模式为什么这样设计的依据。 1...

  • 策略模式

    参考资料:漫话:如何给女朋友解释什么是策略模式? 设计模式之策略模式(实例+Demo) Java设计模式(8)——...

  • 了解 MVVM 以及为什么它实际上是有意义的!

    什么是设计模式? 好吧,在讨论 MVVM 或其他设计模式之前。首先,为什么我们需要这些设计模式,什么是设计模式? ...

  • 设计模式概述

    设计模式概述: 设计模式是GoF(gang of four)提出来的。设计模式是程序员们经过大量的实践总结出来...

  • 2018-01-07

    大话设计模式——开篇 1、什么是设计模式? 设计模式(Design Pattern)...

  • MVC

    引言 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式。实际上是完全不同的概念。MVC设计模式一...

  • 面向对象设计模式-6大原则

    什么是设计模式? iOS内平时有很多设计模式,如:delegate,单例模式,观察者模式,工厂模式…… 设计模式是...

  • 面向对象中23种设计模式介绍

    什么是设计模式? 设计模式分为哪几种? 什么是设计模式? 设计模式的六大原则 1、开闭原则(Open Close ...

网友评论

      本文标题:什么是设计模式?程序员如何学好设计模式?

      本文链接:https://www.haomeiwen.com/subject/fevyxrtx.html