IT职场的小菜常常有这样的疑问:程序员
为何一个类似的功能,大牛一下子就搞定,而后清闲地品着下午茶逛淘宝;而本身加班加点搞到天亮还作不完。web
为何用户提出需求变动后,大牛只需潇洒地敲敲键盘,改改配置;而本身将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来。编程
为何大牛写完的程序测试上线后,几乎完美运行,用户无懈可击;而本身的程序bug重重,改好一个却又引出另外一个,按下葫芦浮起瓢,几近崩溃。设计模式
为何一样是程序员,大牛工资1W,而本身只能拿区区的3K?架构
大牛显然知道一些小菜所不知道的秘密,这秘密又是什么呢?编程语言
这个秘密就是设计模式。设计模式(Design pattern)是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石同样。只有精通了设计模式,才敢说真正理解了软件工程。能够说,设计模式是每个架构师所必备的技能之一。做为一个面向对象设计程序员,只有精通了设计模式,才能完成自身价值从3K到1W的飞跃,才能摆脱码奴的命运,成为一个真正的软件工程师。测试
提到设计模式,不得不感谢GoF(Gang of Four,四人组),他们1995年出版的《设计模式》一书,第一次将设计模式提高到理论高度,并将之规范化。书中一共总结了23种基本的设计模式。而这23中设计模式几乎涵盖了面向对象设计过程当中全部问题的解决方案。书中提到的23种设计模式分别是:spa
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. 迪米特法则(Law Of Demeter)
6. 开闭原则(Open Close Principle)
在软件设计的过程当中,只要咱们尽可能遵循以上六条设计原则,设计出来的软件必定会是一个优秀的软件,它一定足够健壮、足够稳定,并以极大的灵活性来迎接随时而来的需求变动等因素。当彻底明白这六个原则的含义时,小菜便完成了走向大牛的蜕变。