IT职场的小菜经常有这样的疑问:

为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。

为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置;而自己将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来。

为什么大牛写完的程序测试上线后,几乎完美运行,用户无懈可击;而自己的程序bug重重,改好一个却又引出另一个,按下葫芦浮起瓢,几近崩溃。

为什么同样是程序员,大牛工资1W,而自己只能拿区区的3K?

大牛显然知道一些小菜所不知道的秘密,这秘密又是什么呢?

这个秘密就是设计模式。设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。作为一个面向对象设计程序员,只有精通了设计模式,才能完成自身价值从3K到1W的飞跃,才能摆脱码奴的命运,成为一个真正的软件工程师。

提到设计模式,不得不感谢GoF(Gang of Four,四人组),他们1995年出版的《设计模式》一书,第一次将设计模式提升到理论高度,并将之规范化。书中一共总结了23种基本的设计模式。而这23中设计模式几乎涵盖了面向对象设计过程中所有问题的解决方案。书中提到的23种设计模式分别是:

1.单例模式 2.工厂方法模式 3.抽象工厂模式 4.模版方法模式 5.建造者模式 6.代理模式 7.原型模式 8.中介者模式 
9.命令模式 10.责任链模式 11.装饰模式 12.策略模式 13.适配器模式 14.迭代器模式 15.组合模式 16.观察者模式 
17.门面模式 18.备忘录模式 19.访问者模式 20.状态模式 21.解释器模式 22.享元模式 23.桥梁模式

那么如此多的设计模式又是从何而来呢?《易经》有云:“易有太极,是生两仪,两仪生四象,四象生八卦”,意思就是说世界万物皆有起源。而设计模式的起源是面向对象程序设计思想,是面向对象设计的精髓——抽象。面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装、继承、多态。正是这三个机制衍生出了各种各样的设计模式。在面向对象软件设计的发展过程中,除了《设计模式》一书中提到的23中设计模式之外,新的设计模式仍然不断出现。

从面向过程到面向对象是软件设计诞生以来的迈出的最伟大的一步,面向对象程序设计成功解决了面向过程软件编程的低效率问题,并且彻底改变了人们的编程思维,为软件设计揭开了新的篇章。然而,要实现面向对象设计,彻底摆脱面向过程设计思维,并不仅仅是只要使用了一门面向对象的编程语言就能够达到的。使用面向对象设计,可以设计出优秀的软件,同样也可以设计出糟糕的软件。只有遵循一些特定的原则,才能设计出复用性高灵活性好的软件来。

在运用面向对象的思想进行软件设计时,需要遵循的原则一共有6个,他们是:

1.  单一职责原则(Single Responsibility Principle)
2.  里氏替换原则(Liskov Substitution Principle)
3.  依赖倒置原则(Dependence Inversion Principle)
4.  接口隔离原则(Interface Segregation Principle)
5.  迪米特法则(Low Of Demeter)
6.  开闭原则(Open Close Principle)

在软件设计的过程中,只要我们尽量遵循以上六条设计原则,设计出来的软件一定会是一个优秀的软件,它必定足够健壮、足够稳定,并以极大的灵活性来迎接随时而来的需求变更等因素。当完全明白这六个原则的含义时,小菜便完成了走向大牛的蜕变。

迈出从3K到1W的重要一步——掌握设计模式相关推荐

  1. 辞职在家做自媒体,只因用了这3大素材工具,月薪从3k到1w

    新手做自媒体要如何去提高自己的剪辑创作效率? 有很多人都不会信我能一小时就能剪辑完两条甚至更多的视频作品,因为他们自己做不到. 其实这很正常,大周刚开始做自媒体视频剪辑时也是这样的,那时候我根本不会使 ...

  2. 只因用了这5个实用工具,宝妈辞职做自媒体,收入从3k到1w

    想要做好自媒体并获得不错的收益,一定要收藏好大周今天分享的这几个工具网站. 有很多粉丝想要大周再分享一次,记得先点赞收藏起来!同时给粉丝准备了新手指南,给大周扣"8"我会分享给大家 ...

  3. 新年迈出Java后台服务器与数据库交互第一步2022最新通用Java8jdbc8连接mysql8数据库进行增删改查等基本操作详解(IDEA),jar包导入,图片等文件流,批量操作

    文章目录 一.JDBC下载与导入 二.获取连接 三.PreparedStatement类操作数据库 四.操作BLOB类型字段(图片视频等) 五.Batch批量插入

  4. 迈向大牛的重要一步——掌握设计模式

    2019独角兽企业重金招聘Python工程师标准>>> IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝:而自己加班加点搞到天亮还 ...

  5. python脚本百度(SEO)快排--模拟点击最新核心源码

    百度快排就是针对百度搜索引擎进行网站关键词排名优化. 要想在网络上赚钱,一定要学会获取网络流量,百度搜索是很多人几乎每天都使用的网络工具,使用的百度的一个目的就是"搜索",这是一个 ...

  6. 2019年AI芯片产业深度研究报告

    一. 人工智能芯片发展现状及趋势 1.深度学习算法对芯片要求更为苛刻,通用 CPU 性价比相对较差 经历了 60 多年的起起伏伏之后,人工智能终于迎来了第三次爆发.第三次爆发的核心引爆点是深度学习算法 ...

  7. 【AI芯片】2019年AI芯片产业深度研究报告

    程序员的日常 转发文章最多的朋友可以免费进入价值99元的<湾区AI精英会>海归圈子 一. 人工智能芯片发展现状及趋势 1.深度学习算法对芯片要求更为苛刻,通用 CPU 性价比相对较差 经历 ...

  8. Python脚本快排--模拟点击最新核心源码

    什么是百度快排 所谓百度快排就是针对百度搜索引擎进行网站关键词排名优化. 要想在网络上赚钱,一定要学会获取网络流量,百度搜索是很多人几乎每天都使用的网络工具,使用的百度的一个目的就是"搜索& ...

  9. 打工是不可能打工的,2021电商新机遇,抖音小店无货源店群

    大家好~ 我是电商欣欣~ 一个从事电商无货源的90后~ 不要等待机会,而要创造机会. 每天朝九晚六勤恳工作,却只能勉强做个普通人,这可能是很多朋友踏入社会之前没有想到的, 而且现在已经不是只要踏踏实实 ...

最新文章

  1. 实验0 了解和熟悉操作系统
  2. python归一化sklearn_用sklearn进行对数据标准化、归一化以及将数据还原详解
  3. vb 获取mysql表第一行数据_vb如何将远程获取的数据插入本机数据表中
  4. 区块链技术指南 第一章 区块链和比特币的初体验
  5. 并发服务器模型——单进程服务器
  6. Qt TCP协议 传输简单字符串实例
  7. python调用网络摄像机
  8. NumPy库---介绍
  9. ARKit入门到精通 1.0 - 实战案例 AR打地鼠-史小川-专题视频课程
  10. 奥斯汀页眉怎么设置_word页眉怎么插入及删除
  11. GSM、UMTS、LTE
  12. dos界面操作mysql讲解
  13. abap bdc附加选项
  14. 全局变量global的用法
  15. E03.02 Saudi Crown Prince Is Held Responsible for Khashoggi Killing in U.S. Report
  16. 系统dll文件损坏、缺失 如何解决
  17. 你管这叫操作系统源码(二)
  18. watershed分水岭详解
  19. 让你的网站快速被蜘蛛抓取收录的方法
  20. ARM汇编学习(2)

热门文章

  1. 文带你深入了解 Redis 内存模型
  2. tfs 未能在以下位置创建报表文件夹 /TfsReports: 授予的权限不足,无法执行此操作
  3. android 设置view最大高度,android-在RecyclerView上设置最大高度
  4. java解析string_java读取文件内容为string字符串的方法
  5. 数据结构 - 线索化二叉树(线索化与遍历)
  6. 【ZOJ - 3211】Dream City (01背包类问题,贪心背包)
  7. 【POJ - 1463】Strategic game (树上最小点覆盖,树形dp)
  8. linux时间轮 Timing-Wheel的实现
  9. 多线程中局部静态变量初始化的陷阱
  10. 算法(14)-leetcode-explore-learn-数据结构-二叉树的遍历