设计模式系列·初探设计模式之王小二的疑问

你见过凌晨四点的北京吗?

开发了一个月的项目,终于要上线了!王小二和同事们正在为今晚的上线作最后的准备。编程

万事俱备,只欠东风。由于项目是与D公司合做开发的,D公司上线过程当中出了问题,因此王小二他们也没有办法,只能等着了。设计模式

1个小时...2个小时...5个小时过去了,你们都睡过去了。“叮铃铃...叮铃铃...”,一阵刺耳的铃声响起,原来是C哥的闹铃。学习

小二看看表,凌晨4点了。此时睡意全无,去找C哥聊聊天吧!spa

“C哥,你闹铃怎么凌晨4点就响了?”
“哈哈,你见过凌晨四点的北京吗?” 设计

小二顿时充满敬意,原来大牛都这么努力,本身还有什么理由不奋斗呢?说学就学,再向C哥学几招。对象

“C哥啊,真是佩服你。上次你给我讲的面向对象,受益不浅!”
"对,面向对象有不少优点,但你更应该深刻的了解设计模式,这才是王道。"继承

“设计模式,一直听人说,可是不怎么了解,C哥你能给我讲讲吗?”
“好,闲着也是闲着,我就给你大致讲讲吧!”接口

[图:凌晨四点的北京]
clipboard.png图片

如今学设计模式早吗?

“C哥,我有一个疑问。有人说我应该先把面向对象学好了以后再学设计模式。是否是如今接触设计模式有点早啊?”ip

“以个人经验来看,事实恰好相反。面向对象与设计模式一块儿学,能够大大提升你对面向对象的理解,由于设计模式与面向对象是相辅相成的。就如你吃饭时,米饭与菜同样,不能只吃米饭不吃菜吧?得一块吃。”

设计模式产生于建筑学

“小二啊,你知道吗?设计模式,最初来源于建筑学。”
“什么?建筑学?原来万事万物都有联系啊!”小二眼睛瞪得圆圆的。

“是啊。那我给你讲讲设计模式与建筑学的渊源吧。”

Long long ago,一名建筑师自问:“建筑的质量能够衡量吗?能够客观评价吗?”也就是说,建筑的设计美观与否、优秀与否,有没有客观的根据呢?有没有一个模式去衡量呢?

为了研究这个问题,这名建筑师观察了不少建筑物,他惊奇的发现:任何建筑物,优秀的结构之间总有一些相同之处。

随着研究的深刻,这名建筑师认为设计不能够与要解决的问题分离。而他必需要观察出来解决相同问题的不一样设计。

经过这样的方式---观察解决相同问题的不一样设计,缩小了他的关注焦点,他能够洞悉优质设计之间的类似之处。他把这些类似之处称为模式。

最后,他给模式下了一个定义:“在某一情景下的问题解决方案”。

从建筑学到软件设计模式

C哥继续说道:“每种模式,你均可以无数次使用。用来解决咱们重复遇到的这些问题。”
“哦哦,设计模式还挺有用的,若是掌握了设计模式,那我就能够解决不少通用的问题了。”

“是的。慢慢的,有人发现,能不能将建筑学的模式应用到软件开发呢?”
“我以为确定能够啊。软件开发中有不少不断重复出现的,但能够用相同方式去解决的问题。”王小二答道。

“嗯嗯,不错嘛小二。确实,你们认识到了这点后,不少人从事设计模式研究的工做。其中有四我的,他们写了一本书,书中共收录了23种设计模式,这对设计模式在软件开发中的应用产生了深远影响,你们都称他们为四人团”。

为何要学设计模式?

“小二,说了这么多,你绝的咱们为何要学习设计模式呢?”

小二答道:我以为吧,主要有2点:

  1. 更好的理解面向对象;

  2. 复用优秀的解决方案。由于经过复用别人优秀的设计,本身能够避免走不少弯路,针对问题能快速的提出优秀的解决方案。

“嗯,你说的没错。但还有更重要的一点,你没说到。”
“什么啊?还有其余用处?”

“学习设计模式,能够给你一个更高层次的视角去分析、解决问题,避免过早的陷入处理细节的困局。“
”有点不太明白...“

"由于面对问题,不少人会过早的去考虑实现程序的细节,但这每每会模糊了真正的问题。而设计模式,就能帮你去走出这样的思惟困局,面对问题,你会站在一个更高的层次去考虑如何设计。更能清晰的去面对问题,也就能有更好的解决方案。虽然仍是有点抽象,之后慢慢体会就知道了。"

”哦哦,确实是这样啊,我慢慢体会吧。“

四人团的建议

”小二,你知不知道,四人团针对建立优秀面向对象的设计提出了一些策略?“
”真的吗?什么策略“。

他们说的3点很重要:

  1. 针对接口编程;

  2. 优先使用对象组合,而不是继承;

  3. 找到并封装变化的点。

回家睡觉喽

不知不觉中,过去了2个小时,已经凌晨6点了,D公司也解决了问题。
能够上线了,不出意料,上线过程很顺利。
终于能够回家睡觉了!

更多精彩,请关注公众号“聊聊代码”,让咱们一块儿聊聊“左手代码右手诗”的事儿。
图片描述

相关文章
相关标签/搜索