最近,小二跟着C哥學了很多設計模式,寫代碼的功夫可謂更上一層樓。設計模式
可是當小二單獨面對新的項目時,想用學過的設計模式來解決問題,每每無從下手。spa
這樣尷尬的處境令小二非常苦惱。因而,小二決定去請教萬能的C哥...設計
C哥最近不怎麼忙,此時正坐在他的人體工程學椅上幽閒的喝茶呢。
小二找到C哥,坦誠的說出了本身的困惑。圖片
"哈哈,小二。這很正常,這是蛻變的必經之路。"
"這麼說當初您也經歷過?"rem
"確定啊,當初我也有相同的困惑。"
"哈哈,太好了,煩請C哥不吝賜教!"it
"小二,咱們一步步來。當你面對一個項目時,你的設計思路是什麼?"
"嗯...我仔細想一想..."class
過了一會,小二說到:"
我仔細的想了一下,分3個步驟吧:
一、先識別出我須要的類;
二、開始設計這些類的功能;
三、將類組合到一塊兒,造成一個總體。"軟件
"哈哈,不錯。但你有沒有發現問題?"
"嗯?有問題嗎?"方法
"不少人都會這麼作,但這會帶你進入誤區。"
"啊?這還有誤區?頭一次據說。"im
面對小二的疑惑,C哥耐心的解釋道:"
其實,最先發現這個誤區的,是國外的一名建築學家。
他的觀點是:"從片斷開始建設,不是一個好的設計方法。"
"不太明白,爲何這麼說呢?"
C哥繼續說道:"你有沒有發現,在你作第2步:着手設計類的功能的時候,你這時候就開始了設計。但你設計的主要精力放在了類的功能上,慢慢的,你就按照一樣的思路,設計出來基本一致的類。而後你再把這些基本一致的類拼裝到一塊兒,造成一個總體。"
"對!確實是這樣!"
"哈哈,這就是問題了。"
"C哥,你能說的再具體一點嗎?"
"就是說:你這樣設計出來的各個模塊都是類似或相同的。但各部分須要不同凡響,就如世界上沒有兩片相同的葉子同樣,他們都要利用本身獨有的特性,根據本身的特性而有不一樣的設計,從而發揮本身獨有的功能。"
看小二還有點疑惑,C哥笑了笑:"我給你看兩幅圖,你覺的哪一個更有特點?"
錯落有致的房屋
小區清一色的房子
"固然是第一幅圖片的建築更有特點啊,他們依山而建,每棟房屋都有本身不同凡響的特色。"小二爽快的回答道。
"是啊!你過早的去設計類的功能,而後再把他們組裝到一塊兒的思路,是不會很全面的想到你要用到的設計模式的,天然而然,學了不少設計模式也就無從下手了。"
"C哥,大致明白了您的意思。那我具體應該怎麼作呢?"
"那就須要改變你以前的設計思路了。"
"嗯嗯。C哥有什麼好辦法?"
"我先給你說說比較好的設計思路吧:
一、理解需求,從總體的概念觸發;
二、識別在總體中可能出現的模式;
三、從爲其餘模式創造場景的模式開始;
四、應用這些模式;
五、對剩下的模式和中途發現的新模式,重複步驟3-5。"
"啊?聽起來好複雜啊!"
"哈哈,你要是一下聽懂了纔怪呢。"
"C哥,你能不能舉些例子啊?"
"好啊,但今天有點累了,不早了,明天再說吧!正好我也回去想一想..."
"嗯嗯,好的,明天再找您,感謝C哥!"