RT,这是写给萌新自己的设计模式,正确标题应该是“读《设计模式之禅》(以下简称《禅》)中的一点记录与理解”。
这里是一位刚开始走入IT行业,一脸懵逼的菜鸟程序员——提笔人如是说。
前辈说“多写写能有效地提高自己。”,这话很对,但错误在于我提起笔来就开始跑偏啊= =。删了N多流水账,开始正题。
设计模式Design pattern
简单来说是一套前人总结的代码,它是四人帮(碰见大神记得先拜几下)为后人总结出来的便于复用、经过时间考验的设计。如《设计模式》所言:
我们只收录那些在不同系统中多次使用过的成功设计。
如果说我们平时的代码都是自己一边模仿一边摸索写出来的,那么设计模式就是无数个人在摸索过程中同样得到的某种程度上的最优解。看了设计模式后,或许你会发现,原来自己摸索出来的某种写法还有着一个高大上的别名。
或许有人会觉得,就算没有学过设计模式,只用多看看代码就懂了,意义何在?但实际上,很多我们在用的工具类、框架等等,它们的设计中都用到了设计模式。如果我们事先学习了设计模式,那么它能帮助我们更好地了解它们的设计概念,减少了我们对源码阅读的复杂度,也让我们使用的更加顺手。(这是血泪的教训。想当初为了一个兼容问题,对着工具类的文档纠结了好久,然而最后得到的结果只是工厂模式的应用。)
在正式学习设计模式之前,我们首先要了解面向对象的六个设计原则(SOLID)。蛤?有人问我为何要了解面向对象的原则,萌新表示我只知道《设计模式》一书的副标题是可复用面向对象软件的基础。
- 单一职责原则
Single Responsibility Principle
的定义:
对一个类而言,有且仅有一个引起它变化的原因.
- 里氏替换原则
Liskov Substitution Principle
的定义:
如果对每一个类型为S 的对象o1,都有类型为T的对象o2,使得已T定义的所有程序P在所有的对象o2都替换成o1时,程序P的行为没有发生变化,那么类型S是类型T的子类。
- 依赖倒置原则
Dependence Inversion Principle
的定义:
1.高层模块不应该依赖底层模块,两者都应该依赖其抽象。
2.抽象不应该依赖细节。
3.细节应该依赖抽象。
- 接口隔离原则
Interface Segregation Principle
的定义:
1.客户端不应该依赖它不需要的接口;
2.类间的依赖关系应该建立在最小的接口上。
- 迪米特法则
Law of Demeter
的定义:
只与朋友交流.
- 开闭原则
Open Closed Principle
的定义 :
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
关于六个原则的详解,萌新表示自己的理解没有到位,只能找前辈的讲解给感兴趣的朋友们自己深究了。参考一、参考二。
写在最后
如《禅》的作者所说设计模式不是工具,而是指导思想。好好啃完设计原则,树立下正确的面向对象设计理念。带上《禅》作者一句建议:
结合情况使用原则。
那么接下来就要开始了解设计模式了。