设计模式系列·无从下手的困惑(一)

小二的困惑

最近,小二跟着C哥学了不少设计模式,写代码的功夫可谓更上一层楼。

但是当小二单独面对新的项目时,想用学过的设计模式来解决问题,往往无从下手。

这样尴尬的处境令小二很是苦恼。于是,小二决定去请教万能的C哥...

C哥最近不怎么忙,此时正坐在他的人体工程学椅上幽闲的喝茶呢。
小二找到C哥,坦诚的说出了自己的困惑。

"哈哈,小二。这很正常,这是蜕变的必经之路。"
"这么说当初您也经历过?"

"肯定啊,当初我也有相同的困惑。"
"哈哈,太好了,烦请C哥不吝赐教!"

思维误区

"小二,我们一步步来。当你面对一个项目时,你的设计思路是什么?"
"嗯...我仔细想想..."

过了一会,小二说到:"
我仔细的想了一下,分3个步骤吧:
1、先识别出我需要的类;
2、开始设计这些类的功能;
3、将类组合到一起,形成一个整体。"

"哈哈,不错。但你有没有发现问题?"
"嗯?有问题吗?"

"很多人都会这么做,但这会带你进入误区。"
"啊?这还有误区?头一次听说。"

面对小二的疑惑,C哥耐心的解释道:"
其实,最早发现这个误区的,是国外的一名建筑学家。
他的观点是:"从片段开始建设,不是一个好的设计方法。"

"不太明白,为什么这么说呢?"
C哥继续说道:"你有没有发现,在你做第2步:着手设计类的功能的时候,你这时候就开始了设计。但你设计的主要精力放在了类的功能上,慢慢的,你就按照同样的思路,设计出来基本一致的类。然后你再把这些基本一致的类拼装到一起,形成一个整体。"

"对!确实是这样!"
"哈哈,这就是问题了。"

"C哥,你能说的再具体一点吗?"
"就是说:你这样设计出来的各个模块都是相似或相同的。但各部分需要与众不同,就如世界上没有两片相同的叶子一样,他们都要利用自己独有的特性,根据自己的特性而有不同的设计,从而发挥自己独有的功能。"

看小二还有点疑惑,C哥笑了笑:"我给你看两幅图,你觉的哪个更有特色?"

错落有致的房屋
设计模式系列·无从下手的困惑(一)_第1张图片

小区清一色的房子
设计模式系列·无从下手的困惑(一)_第2张图片

"当然是第一幅图片的建筑更有特色啊,他们依山而建,每栋房屋都有自己与众不同的特点。"小二爽快的回答道。

"是啊!你过早的去设计类的功能,然后再把他们组装到一起的思路,是不会很全面的想到你要用到的设计模式的,自然而然,学了很多设计模式也就无从下手了。"

应用到软件设计中

"C哥,大体明白了您的意思。那我具体应该怎么做呢?"
"那就需要改变你之前的设计思路了。"

"嗯嗯。C哥有什么好办法?"
"我先给你说说比较好的设计思路吧:
1、理解需求,从整体的概念触发;
2、识别在整体中可能出现的模式;
3、从为其他模式创造场景的模式开始;
4、应用这些模式;
5、对剩下的模式和中途发现的新模式,重复步骤3-5。"

"啊?听起来好复杂啊!"
"哈哈,你要是一下听懂了才怪呢。"

"C哥,你能不能举些例子啊?"
"好啊,但今天有点累了,不早了,明天再说吧!正好我也回去想想..."

"嗯嗯,好的,明天再找您,感谢C哥!"

设计模式系列·无从下手的困惑(一)_第3张图片

你可能感兴趣的:(design-pattern,oop,设计模式)