• 软件开发程序员的“九阳神功”——设计模式


    曾有人说过“设计模式、数据结构和算法就好比九阳神功,你会了九阳神功再学习其他的武功那就事半功倍”,这个比喻恰到好处。

    1. “九阳神功”之设计模式

    在实际中我们也经常跟设计模式打交道,比如我们刚开始面试的时候基本上大部分的IT公司都会问你:

    “你会哪些设计模式”?

    “你实际项目中使用过哪些设计模式,又是如何使用的”等等之类的问题。

    再比如我们项目新一期的开发,如果是在原有的基础上进行新增你会怎么办(可扩展性)?

    如果考虑以后可能某个功能会变更另外一种对接方式你又会怎么办(可维护性)?

    你是否遇到了刚进公司看到别人封装的代码感觉复杂但是细看又感觉设计很妙?

    我们从“能写代码”到“写好代码”再到“能够设计代码”,这不仅仅是技术的提升也是我们编程思想的提升,其中的关键就是设计模式。

    开发过程中面临着高内聚低耦合性、可维护性、可扩展性、可重用性以及灵活性等多方面的挑战,使用设计模式就是为了让程序变得更好。而能否理解并掌握设计模式已变成了衡量程序员能力的标准之一。

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/1979061b61f94adf99e3b499242497bc.jpeg

    下面我们就来认识下九阳神功的基础功——设计模式

    2.设计模式优势及分类

    01.设计模式是什么?

    设计模式(Design pattern)简单来说就是在软件工程中,我们的前辈们在程序不断开发的过程中为了可以实现代码重用、可扩展、保证代码可读性和可靠性、提高我们的开发和维护效率,而总结出了一套被反复使用、多数人知晓的、经过分类编目的代码设计经验(让我们少走弯路)。

    目前开发中比较流行的还是1994年GoF(Gang of Four四人组)发布的Design patterns书中的提到的23种经典设计模式。

    在这里插入图片描述

    当然现在设计模式的种类不仅仅这些,是一些大佬或者公司内部研发的设计模式,只不过并没有公开而已。

    02.设计模式的优势:

    ◆重用设计,实现代码的重用。

    ◆提高代码质量,设计模式有助于我们编写出高质量,可维护的代码,让系统重构变得更加容易。

    ◆提高代码阅读能力

    优秀的代码毋庸置疑一定会使用设计模式,如果不了解设计模式的情况下去阅读肯定难以理解,也不能从同一高度的去分析源码或者别人写的代码。

    ◆节省沟通成本

    工作中讨论问题的人都知晓设计模式的话,就不需要对设计模式做更多的解释,只需要讨论使用那种设计模式就可以,在开发文档中采用设计模式词汇其他人也更容易你的想法和做法。

    ◆节省时间

    往往采用正确的设计模式,可以节约我们开发和维护的大量时间。

    03.设计模式的分类:

    23种经典设计模式按照类型来分的话可以分为三类:

    l 创建型

    l 结构型

    l 行为型

    具体如下:

    在这里插入图片描述

    这23种设计模式其实我们开发中都有接触,只不过我们可能使用它的时候对它并不熟悉。

    以java语言为例,例如:java的IO流使用的高级流BufferedInputStream就使用了装饰者设计模式,集合List和和Set遍历使用的Iterator就是使用了迭代器模式,JDBC连接数据库加载驱动获取连接就使用了桥接模式,对象的深浅层次拷贝就是使用的原型模式等等。

    在这里插入图片描述

    Java语言中非常流行的框架spring被称为非常厉害的框架,设计模式在spring中的展现可谓是淋漓尽致。

    Spring中使用的设计模式如下:

    图片

    04.学习设计模式推荐图书:

    《大话设计模式》

    在这里插入图片描述

    《HEAD FIRST 设计模式》

    在这里插入图片描述

  • 相关阅读:
    Java_File 文件类 整理详解(求求了进来看看)
    Qt还是尽量使用UTF8编码
    C++中双线程调用网络摄像头,用多线程调用多个摄像头并同步执行算法
    【排故】线上排故,如何快速定位线上系统的故障
    64 最长公共子序列
    Hive搭建
    基于PSO粒子群算法的MPPT最大功率跟踪Simulink仿真,PSO采用S函数实现
    牧童
    51单片机项目(10)——基于51单片机的电压计
    [从零学习汇编语言] - 内中断
  • 原文地址:https://blog.csdn.net/weixin_43802541/article/details/125623926