設(shè)計(jì)模式群23998319。對(duì)設(shè)計(jì)模式不感興趣的勿擾。謝謝!。
昨天新人報(bào)道,問了幾個(gè)問題。
問:
什么是設(shè)計(jì)模式?我一直以為做軟件只需要 語言+數(shù)據(jù)結(jié)構(gòu)。
有人這樣回答,我理解數(shù)據(jù)結(jié)構(gòu)也是一種設(shè)計(jì)模式。
不過這個(gè)我并不茍同。
我所認(rèn)為
數(shù)據(jù)結(jié)構(gòu)是面向最底層的,而設(shè)計(jì)模式是面向應(yīng)用開發(fā)的一種策略。數(shù)據(jù)結(jié)構(gòu)是解決的如何實(shí)現(xiàn),而設(shè)計(jì)模式是在此實(shí)現(xiàn)上面向應(yīng)用的一種開發(fā)策略。
又問設(shè)計(jì)模式僅僅是針對(duì)復(fù)用?
回答:不是僅僅針對(duì)復(fù)用 擴(kuò)展啦 還有測(cè)試等等,當(dāng)時(shí)自己也就只能想到這些。
提問者 設(shè)計(jì)模式有什么用?開始看到設(shè)計(jì)模式這四個(gè)字心里總想知道這個(gè)問題,不過當(dāng)真的知道了,就會(huì)覺得問這個(gè)問題有點(diǎn)傻......(恨不得拿頭去撞墻......)
設(shè)計(jì)模式有什么用?設(shè)計(jì)模式說白了就是一種前人設(shè)計(jì)代碼或者說軟件總結(jié)出來的模板(很有用的)。我們學(xué)習(xí)它就是問了經(jīng)驗(yàn)復(fù)用。為了讓自己的代碼能更好的適應(yīng)變化,提高程序的可維護(hù)性和可擴(kuò)展性。學(xué)寫代碼就是這樣,就是用別人的經(jīng)驗(yàn)和權(quán)威的原則寫出能解決客戶需求的代碼,雖然創(chuàng)新思維是好東西,沒必要什么都自己來創(chuàng)造,不可以總結(jié)造電燈,自己造個(gè)編程語言再自己開發(fā)代碼。所以學(xué)習(xí)前者的經(jīng)驗(yàn)是我們的主流。
我們是基于一些OOP是設(shè)計(jì)原則根據(jù)不同的需求通過不同的設(shè)計(jì)模式來到底所說的:更好的適應(yīng)變化,提高程序的可維護(hù)性和可擴(kuò)展性。
我答:可能你現(xiàn)在開發(fā)的軟件針對(duì)現(xiàn)在的形式是很適合的,但是當(dāng)你要進(jìn)行功能或行為上的擴(kuò)展的話,松耦合的設(shè)計(jì)就可以使你不必修改多個(gè)類來,擴(kuò)展功能了。其實(shí)現(xiàn)在的很多程序員并沒有真正的OO 。也包括我,都是針對(duì)要求去實(shí)現(xiàn)寫特定的類,所以我總認(rèn)為,在編碼前面的建模還有分析是很重要的。
又問:建模就是建立"模式"?
答 這個(gè)“模”不是模式 是模型。就和建筑上的畫圖差不多
又問:模型就是指軟件的構(gòu)造(結(jié)構(gòu))組成對(duì)吧?
答:恩 還有構(gòu)建之間的關(guān)系,消息通訊等。
每一次的提問和回答都最自己的知識(shí)有所提高。讓我思考更多,比如在問什么是模型的時(shí)候,這個(gè)確實(shí)自己也吃不準(zhǔn)。在以前的學(xué)習(xí)中并沒解釋過,是很虛幻的概念,可意會(huì)不可言傳的東西。按照我的理解就是通常建筑上開始時(shí)候的設(shè)計(jì)。