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.单一职责原则(SingleResponsibilityPrinciple)
2.里氏替换原则(LiskovSubstitutionPrinciple)
3.依赖倒置原则(DependenceInversionPrinciple)
4.接口隔离原则(InterfaceSegregationPrinciple)
5.迪米特法则(LowOfDemeter)
6.开闭原则(OpenClosePrinciple)
在软件设计的过程中,只要我们尽量遵循以上六条设计原则,设计出来的软件一定会是一个优秀的软件,它必定足够健壮、足够稳定,并以极大的灵活性来迎接随时而来的需求变更等因素。当完全明白这六个原则的含义时,小菜便完成了走向大牛的蜕变。
分享到:
相关推荐
为解放双手迈出重要一步——海外体验奥迪自动驾驶技术.pdf
在《设计模式——约会版》这一独特视角下探讨的设计模式,并非我们传统意义上的面向对象设计模式(如工厂模式、单例模式等),而是通过模拟约会场景,将抽象的设计原则与实际生活中的互动策略相结合,以此来形象地...
《Head First 设计模式》的特点在于其丰富的图表、幽默的插图和互动式的教学方式,使读者能够轻松理解和掌握设计模式。通过实际案例和有趣的情景,书中的每个模式都得到了生动的展示,帮助读者将理论知识转化为实际...
总的来说,"让你的简历脱颖而出——精美配图设计优秀国外ppt模板下载"提供的资源是一个极好的工具,可以帮助你在求职路上迈出成功的第一步。通过合理利用这些模板,你的简历将不仅仅是文字的罗列,而是一部生动展示...
根据给定文件的信息,我们可以提炼出以下相关的IT知识点: ### 一、引言与职业发展 **引言:** 在IT行业中,很多技术人员可能会发现自己在某个...掌握了这些模式,意味着你在通往架构师的道路上迈出了坚实的一步。
迈出坚实的步划——我省普通高中《通用技术》课程建设的策略思考.pptx
### Android入门教程系列之1——贪吃蛇改进版 #### 一、背景介绍与课程概述 本教程旨在为初学者提供一套系统性的Android开发学习方案,通过实践项目“贪吃蛇改进版”来掌握Android应用开发的基础知识和技术要点。...
《坦克大战3.0》是一款基于Java编程语言开发的经典游戏,源码的提供为...通过深入研究这个项目,开发者不仅可以提升自己的编程技能,还能了解到如何将理论知识应用于实际项目,从而在游戏开发的道路上迈出坚实的一步。
《x86汇编语言 从实模式到保护模式》这本书正是在这一领域中,为读者提供了一条从基础到深入的探索路径。 这本书详细地阐述了x86架构在启动和运行过程中的底层机制,特别是微处理器从实模式向保护模式过渡的关键...
内容从基础的机械结构设计到复杂的自动控制理论,无不涵盖,力求让每一位新手都能在机器人学的世界中找到乐趣,并快速成长。 在机械工程领域,学习机器人的结构设计是基础。资源包详细介绍了不同类型的关节和传动...
《轴机械加工工艺规程与钻床夹具设计》这份机械工程专业的毕业设计,是机械学子在大学生涯中必经的一次实践能力的检验。它不仅是对学生在理论知识...这份毕业设计的完成,标志着机械学子向成熟工程师迈出的重要一步。
在职场中,一份精心制作的工作总结报告PPT模板是至关重要的,它可以帮助我们高效地整理工作成果、..."迈向成功——工作总结报告ppt模板"正是这样一个工具,帮助我们在职场中迈出坚实的一步,实现从优秀到卓越的跨越。
在进行小学六年级上册语文教学设计时,我们选择了一篇富有教育意义的课文——《走一步,再走一步》,它通过...通过精心的教学设计,我们希望每位学生都能从中学到知识,收获智慧,最终在人生的道路上勇敢地迈出每一步。
Euro NCAP 致力于提高重型卡车的安全性,这是朝着实现“零伤亡愿景”目标迈出的重要一步。这一目标旨在消除交通死亡和重伤事故。尽管重型货车(HGV)在欧洲道路上的车辆总数中所占比例很小,但它们在严重事故中的...
《ArcObjects开发基础与技巧——基于Visual Basic .NET》是由蒋波涛编著的一本GIS(地理...通过阅读此书,读者不仅可以掌握ArcObjects开发的基本技能,还能深入了解GIS的原理和应用,从而在GIS开发领域迈出坚实的步伐。
尽管它的运算速度与现代计算机相比显得缓慢,但它的问世,却标志着人类在信息处理方面迈出了历史性的一步。 随着技术的发展,计算机从第一代的真空管时代,过渡到第二代的晶体管时代,体积逐渐缩小,运算速度大幅...
HP迈出Linux坚实一步.pdf
作为“飞高高的比目鱼”团队的一员,我有幸在这个项目中扮演了重要的角色,并在其中学习到了宝贵的技能和经验。本文将详细叙述我在小组中的职责,分享我对游戏开发的新理解,以及我在实训过程中的收获和教训。 一、...
随着社交媒体的兴起,微博已成为众多企业品牌推广和信息传播的重要渠道之一。对于联通公司这样的国内知名电信运营商来说,利用微博平台进行市场活动和客户服务无疑成为增强竞争力的有力手段。为了帮助员工和合作伙伴...
因此,此项目对于学生而言,既是一次理论与实践相结合的演练,也是他们向未来职业生涯迈出的重要一步。 总之,通过对普通钻床的改造为多轴钻床,不仅能够提升机床的加工能力,增强企业的市场竞争力,还能够作为机械...