迈出从3K到1W的重要一步——掌握设计模式
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的重要一步——掌握设计模式相关推荐
- 辞职在家做自媒体,只因用了这3大素材工具,月薪从3k到1w
新手做自媒体要如何去提高自己的剪辑创作效率? 有很多人都不会信我能一小时就能剪辑完两条甚至更多的视频作品,因为他们自己做不到. 其实这很正常,大周刚开始做自媒体视频剪辑时也是这样的,那时候我根本不会使 ...
- 只因用了这5个实用工具,宝妈辞职做自媒体,收入从3k到1w
想要做好自媒体并获得不错的收益,一定要收藏好大周今天分享的这几个工具网站. 有很多粉丝想要大周再分享一次,记得先点赞收藏起来!同时给粉丝准备了新手指南,给大周扣"8"我会分享给大家 ...
- 新年迈出Java后台服务器与数据库交互第一步2022最新通用Java8jdbc8连接mysql8数据库进行增删改查等基本操作详解(IDEA),jar包导入,图片等文件流,批量操作
文章目录 一.JDBC下载与导入 二.获取连接 三.PreparedStatement类操作数据库 四.操作BLOB类型字段(图片视频等) 五.Batch批量插入
- 迈向大牛的重要一步——掌握设计模式
2019独角兽企业重金招聘Python工程师标准>>> IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝:而自己加班加点搞到天亮还 ...
- python脚本百度(SEO)快排--模拟点击最新核心源码
百度快排就是针对百度搜索引擎进行网站关键词排名优化. 要想在网络上赚钱,一定要学会获取网络流量,百度搜索是很多人几乎每天都使用的网络工具,使用的百度的一个目的就是"搜索",这是一个 ...
- 2019年AI芯片产业深度研究报告
一. 人工智能芯片发展现状及趋势 1.深度学习算法对芯片要求更为苛刻,通用 CPU 性价比相对较差 经历了 60 多年的起起伏伏之后,人工智能终于迎来了第三次爆发.第三次爆发的核心引爆点是深度学习算法 ...
- 【AI芯片】2019年AI芯片产业深度研究报告
程序员的日常 转发文章最多的朋友可以免费进入价值99元的<湾区AI精英会>海归圈子 一. 人工智能芯片发展现状及趋势 1.深度学习算法对芯片要求更为苛刻,通用 CPU 性价比相对较差 经历 ...
- Python脚本快排--模拟点击最新核心源码
什么是百度快排 所谓百度快排就是针对百度搜索引擎进行网站关键词排名优化. 要想在网络上赚钱,一定要学会获取网络流量,百度搜索是很多人几乎每天都使用的网络工具,使用的百度的一个目的就是"搜索& ...
- 打工是不可能打工的,2021电商新机遇,抖音小店无货源店群
大家好~ 我是电商欣欣~ 一个从事电商无货源的90后~ 不要等待机会,而要创造机会. 每天朝九晚六勤恳工作,却只能勉强做个普通人,这可能是很多朋友踏入社会之前没有想到的, 而且现在已经不是只要踏踏实实 ...
最新文章
- 实验0 了解和熟悉操作系统
- python归一化sklearn_用sklearn进行对数据标准化、归一化以及将数据还原详解
- vb 获取mysql表第一行数据_vb如何将远程获取的数据插入本机数据表中
- 区块链技术指南 第一章 区块链和比特币的初体验
- 并发服务器模型——单进程服务器
- Qt TCP协议 传输简单字符串实例
- python调用网络摄像机
- NumPy库---介绍
- ARKit入门到精通 1.0 - 实战案例 AR打地鼠-史小川-专题视频课程
- 奥斯汀页眉怎么设置_word页眉怎么插入及删除
- GSM、UMTS、LTE
- dos界面操作mysql讲解
- abap bdc附加选项
- 全局变量global的用法
- E03.02 Saudi Crown Prince Is Held Responsible for Khashoggi Killing in U.S. Report
- 系统dll文件损坏、缺失 如何解决
- 你管这叫操作系统源码(二)
- watershed分水岭详解
- 让你的网站快速被蜘蛛抓取收录的方法
- ARM汇编学习(2)
热门文章
- 文带你深入了解 Redis 内存模型
- tfs 未能在以下位置创建报表文件夹 /TfsReports: 授予的权限不足,无法执行此操作
- android 设置view最大高度,android-在RecyclerView上设置最大高度
- java解析string_java读取文件内容为string字符串的方法
- 数据结构 - 线索化二叉树(线索化与遍历)
- 【ZOJ - 3211】Dream City (01背包类问题,贪心背包)
- 【POJ - 1463】Strategic game (树上最小点覆盖,树形dp)
- linux时间轮 Timing-Wheel的实现
- 多线程中局部静态变量初始化的陷阱
- 算法(14)-leetcode-explore-learn-数据结构-二叉树的遍历