标题:Design Patterns | 01 为什么要尽早掌握设计模式

链接:

标签:设计模式

摘要:设计模式是前人经验的总结,教大家如何写出可扩展、可读、可维护的高质量代码。设计模式与日常工作中的编码有直接的关系,直接影响到开发人员的开发能力。

1 什么是设计模式?

设计模式是前人经验的总结,教大家如何写出可扩展、可读、可维护的高质量代码。设计模式与日常工作中的编码有直接的关系,直接影响到开发人员的开发能力。

学习“数据结构与算法”是为了写出高效的代码,而学习设计模式是为了写出高质量的代码。

也许有同学会问:只要代码能用、能解决问题不就够了吗?

其实不然,写出“能用”代码的人比比皆是,但并不是每个人都能写出“好用”的代码。只会写能用的代码,永远成不了大牛。

另一方面,写烂代码和好代码花费的时间是差不多的。当你把编写高质量代码培养成习惯之后,在编写代码的时候,你自然就有代码质量意识,也就能写出不错的代码。

2 为什么要学习设计模式?

2.1 完美回答面试中设计模式相关的问题

先上一道面试题:

“你了解设计模式吗?在你过往的项目中,用到过哪些设计模式?是在什么场景下用的?都解决了哪些问题?”

这一连串提问,很眼熟吧?学习设计模式能帮你在这道题目上吊打面试官。

2.2 不再编写被其他同事吐槽的烂代码

代码写得好,能让你在团队中脱颖而出。

代码能力是一个程序员最基础的能力,是展示一个程序员基础素养直接的衡量标准。你写的代码,实际上就是你名片。

2.3 让读源码、学框架事半功倍

提升程序开发软实力,就要注重技术的积累,既要有广度,也要有深度。这其中学框架、读源码是必经之路。

优秀的开源项目、框架、中间件,是集各大顶尖高手的丰厚经验,经过大量迭代才成型的,我们如果没有身后的基本功,在剖析原理、学习技术的时候,就不可能参透精髓,顶多只是了解个皮毛,似懂非懂。

2.4 提高复杂代码的设计和开发能力

假设现在给你一个任务:开发一个跟业务无关的、通用的功能模块,你会如何下手?

也许你需要思考这些问题(包括但不限于):

如何分层、分模块?如何设计相关类?每个类应该有哪些属性、方法?
怎么设计类之间的交互?该用继承还是组合?该使用接口还是抽象类?
如何解耦,保证高内聚低耦合?该用单例模式还是静态方法?用工厂模式创建对象还是直接 new 出来?

2.5 为职场发展做好技术准备

瘦风说:不想当大牛的程序员不是好菜鸟。我们如果要在职场取得更长远的发展,就要重视基本功的训练和基础知识的积累。

(1) 随着技术的积累,我们可能需要承担一些培养新人、指导初级员工、做 code review 等方面的工作。
可如果我们自己对 “什么是好代码?如何写出好代码?” 都不了解,那又要如何指导别人、让别人信服呢?

(2) 如果你的级别比较高,可能还要为 开发进度、开发效率和项目质量 负责。如果项目中有很多垃圾代码,会导致整个项目的维护成本高昂,添加、修改一个功能都会很费力,最终拉低整个团队的开发效率。而代码质量不够高,还会导致线上 bug 频发,也难以及时排查解决相关问题。

(3) 最后,当你成为团队的 leader,或者资深工程师、技术专家之后,你肯定要负责一部分团队的招聘工作。这时,如果要考察候选人的设计能力、代码能力,那设计模式相关的问题会是一个很好的切入点。

3 本篇总结

设计模式与编码、开发有着直接的关系,是你现在就要开始学习的。
早点学,以后的项目就都可以拿来锻炼,每写一行代码都是对内功的使用和强化,是可以在整个职业生涯中受益的事。

参考资料:

极客时间专栏-王争《设计模式之美》

版权声明

作者: 瘦风(https://healchow.com)

出处: 博客园 瘦风的博客(https://www.cnblogs.com/shoufeng)

感谢阅读, 右侧导航栏有「瘦风的南墙」公众号二维码,输出更及时、更体系,欢迎扫码关注

Design Patterns | 01 为什么要尽早掌握设计模式的更多相关文章

  1. Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】

    原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...

  2. [Design Patterns] 01. Creational Patterns - Abstract Factory

    设计模式是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结,使用设计模式的目的是提高代码的可重用性,让代码更容易被他人理解,并保证代码可靠性.它是代码编制真正实现工程化. 四个关键元素 ...

  3. Design Patterns in Smalltalk MVC 在Smalltalk的MVC设计模式

    Design Patterns in Smalltalk    MVC在Smalltalk的MVC设计模式 The Model/View/Controller (MVC) triad ofclasse ...

  4. [Design Patterns] 3. Software Pattern Overview

    When you're on the way which is unknown and dangerous, just follow your mind and steer the boat. 软件模 ...

  5. Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】

    原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...

  6. 设计模式(Design Patterns)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  7. 设计模式(Design Patterns)Java版

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  8. 云设计模式-Design patterns for microservices

    云设计模式 https://azure.microsoft.com/zh-cn/blog/design-patterns-for-microservices/ https://www.cnblogs. ...

  9. Java设计模式(Design Patterns)——可复用面向对象软件的基础

    设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. 使用设计模式是为了可重用代码.让代码更容易被他 ...

随机推荐

  1. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:循环神经网络预测正弦函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt # 定义RNN的参数. HIDDEN_SIZE = ...

  2. MySQL修改最大连接数的两个方法,偏爱第一种

    总结MySQL修改最大连接数的两个方式   最大连接数是可以通过mysql进行修改的,mysql数据库修改最大连接数常用有两种方法,今天我们分析一下这两种方法之间的特点和区别,以便我们能更好的去维护m ...

  3. springboot-security 登录 403

    之前一直使用shiro,刚开始使用security,大佬还请不要吐槽 security默认开启csrf防护,所谓csrf也就是伪请求.我们只需要把他关闭就好(因为我们的系统是在自己内网使用,不会有外部 ...

  4. 吴裕雄--天生自然python机器学习:KNN-近邻算法在手写识别系统上的应用

    需要识别的数字已经使用图形处理软件,处理成具有相同的色 彩和大小® : 宽髙是32像 素 *32像素的黑白图像.尽管采用文本格式存储图像不能有效地利用内 存空间,但是为了方便理解,我们还是将图像转换为 ...

  5. 算法笔记4.3递归 问题 A: 吃糖果

    问题 A: 吃糖果 题目描述 名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N 块巧克力,20 > N >0). 妈妈告诉名名每天可以吃一块或者两块巧克力. 假设名 ...

  6. 系统学习Javaweb6----JavaScript2

    感想:感觉自己还是只是学到皮毛,仍需继续努力,明天开始需要学习Android和阅读感想的书写. 学习笔记: 2.3.运算符 JavaScript运算符与java运算符基本一致. 这里我们来寻找不同点进 ...

  7. Nesterov方法的python实现

    牛顿动量法,相比于上一篇Momentum,不一样的地方是应用了临时更新 这里用python对其进行简单实现,如下: # coding=utf-8 """ 基于小批量梯度下 ...

  8. web接口测试中需要注意的点

    1.接口返回 数据格式是否和预期一致.例如:要求返回json格式的数据,json数据的key命名是否正确,对应的value是否与数据库一致. 需要转换的数据是否正确转换,例如时间戳是否按正确转换为时间 ...

  9. python关于文件操作

    今日所得 文件操作模式的补充 文件光标的移动控制 截断文件 修改文件 函数的简单介绍 文件操作模式的补充 """ r w a 将上面的三个模式称为纯净模式 r+ w+ a ...

  10. Xen入门系列三【Xen 管理工具 xm】

    xm命令是管理Xen的最基本的工具,可以通过xm --help 来获得帮助. 1. 列出所有正在运行的虚拟操作系统 # xm list PS[1]:可缩写为 xm li 2. 启动虚拟机 # 通过配置 ...