設(shè)計模式群中的一個疑問

          設(shè)計模式群23998319。對設(shè)計模式不感興趣的勿擾。謝謝!。
          昨天新人報道,問了幾個問題。

          問:什么是設(shè)計模式?我一直以為做軟件只需要 語言+數(shù)據(jù)結(jié)構(gòu)。
          有人這樣回答,我理解數(shù)據(jù)結(jié)構(gòu)也是一種設(shè)計模式。
          不過這個我并不茍同。
          我所認為數(shù)據(jù)結(jié)構(gòu)是面向最底層的,而設(shè)計模式是面向應(yīng)用開發(fā)的一種策略。數(shù)據(jù)結(jié)構(gòu)是解決的如何實現(xiàn),而設(shè)計模式是在此實現(xiàn)上面向應(yīng)用的一種開發(fā)策略。

          又問設(shè)計模式僅僅是針對復(fù)用? 
          回答:不是僅僅針對復(fù)用 擴展啦  還有測試等等,當(dāng)時自己也就只能想到這些。


          提問者 設(shè)計模式有什么用?開始看到設(shè)計模式這四個字心里總想知道這個問題,不過當(dāng)真的知道了,就會覺得問這個問題有點傻......(恨不得拿頭去撞墻......) 
           設(shè)計模式有什么用?設(shè)計模式說白了就是一種前人設(shè)計代碼或者說軟件總結(jié)出來的模板(很有用的)。我們學(xué)習(xí)它就是問了經(jīng)驗復(fù)用。為了讓自己的代碼能更好的適應(yīng)變化,提高程序的可維護性和可擴展性。學(xué)寫代碼就是這樣,就是用別人的經(jīng)驗和權(quán)威的原則寫出能解決客戶需求的代碼,雖然創(chuàng)新思維是好東西,沒必要什么都自己來創(chuàng)造,不可以總結(jié)造電燈,自己造個編程語言再自己開發(fā)代碼。所以學(xué)習(xí)前者的經(jīng)驗是我們的主流。
           我們是基于一些OOP是設(shè)計原則根據(jù)不同的需求通過不同的設(shè)計模式來到底所說的:更好的適應(yīng)變化,提高程序的可維護性和可擴展性。 
           
          我答:可能你現(xiàn)在開發(fā)的軟件針對現(xiàn)在的形式是很適合的,但是當(dāng)你要進行功能或行為上的擴展的話,松耦合的設(shè)計就可以使你不必修改多個類來,擴展功能了。其實現(xiàn)在的很多程序員并沒有真正的OO 。也包括我,都是針對要求去實現(xiàn)寫特定的類,所以我總認為,在編碼前面的建模還有分析是很重要的。 

          又問:建模就是建立"模式"? 
          答 這個“模”不是模式  是模型。就和建筑上的畫圖差不多 


          又問:模型就是指軟件的構(gòu)造(結(jié)構(gòu))組成對吧?
          答:恩  還有構(gòu)建之間的關(guān)系,消息通訊等。


           每一次的提問和回答都最自己的知識有所提高。讓我思考更多,比如在問什么是模型的時候,這個確實自己也吃不準。在以前的學(xué)習(xí)中并沒解釋過,是很虛幻的概念,可意會不可言傳的東西。按照我的理解就是通常建筑上開始時候的設(shè)計。

          posted on 2009-01-16 09:46 duduli 閱讀(1661) 評論(2)  編輯  收藏 所屬分類: 設(shè)計模式

          評論

          # re: 設(shè)計模式群中的一個疑問 2009-01-18 10:34 Daniel.Shi

          1.數(shù)據(jù)結(jié)構(gòu)是“面向底層”的描述不準確,在具體分層架構(gòu)中才有底層和上層,數(shù)據(jù)結(jié)構(gòu)研究的是針對具體問題的算法,使用之處不存在“底層”之說。例如表現(xiàn)層也是需要使用數(shù)的算法的,對吧
          2. 模式:事物的標(biāo)準樣式。模式就是從日常設(shè)計中總結(jié)出經(jīng)典的模板,目的就是為了讓經(jīng)典得以復(fù)用,不管是復(fù)用在什么場景下(設(shè)計、編碼、測試)。
          3. 模型除了對象結(jié)構(gòu)外,還有關(guān)系和條件(限制)。
          4. 耦合是很“文”的叫法,說白了就是關(guān)系。松耦合,就是弱化關(guān)系,我的變化盡量少的影響到你。

          另外希望強調(diào)的是,所說的設(shè)計模式、建模,都是在說面向?qū)ο蟮脑O(shè)計模式、面向?qū)ο蟮慕#驗槟J皆诿嫦驅(qū)ο蟪墒熘熬鸵呀?jīng)產(chǎn)生,面向?qū)ο蟮陌l(fā)展實際就是從非面向?qū)ο笳Z言上總結(jié)了很多的模式而來。ER建模是也建模,數(shù)據(jù)庫的模型依然是會涉及到(實際上一般即使用了ORM,也還要涉及ER模型)。建的模,是在特定技術(shù)領(lǐng)域中的模型。在數(shù)據(jù)庫技術(shù)上,即使你用OO建模,依然要轉(zhuǎn)換成數(shù)據(jù)庫模型、數(shù)據(jù)庫的語言——我們是受到平臺和技術(shù)的限制的。
          理論上,OO和模式是好的方向,但是實際過程中往往還是需求非OO(表現(xiàn)層語言)和反模式(涉及數(shù)據(jù)庫性能的時候)。不要盲目OO和模式至上,做到完全的面向接口,那么才是最高的境界。  回復(fù)  更多評論   

          # re: 設(shè)計模式群中的一個疑問 2009-01-18 13:14 nokiaguy

          設(shè)計模式實際上就是編程方式和習(xí)慣,是經(jīng)驗的總結(jié),這和生活習(xí)慣類似,如果擁有好的生活習(xí)慣,你就會很健康,在其他人眼里也會很好,而如果生活習(xí)慣不好,時間不顧慮,這當(dāng)然沒什么問題(自我感覺良好),但可能會對自己的健康和其他的方面帶來影響(有時會很大)。
          設(shè)計模式也一樣,雖然不使用任何設(shè)計模式也可以寫任何的軟件,但是這就相當(dāng)于沒有好的生活習(xí)慣一樣,會給這些系統(tǒng)帶來很大的麻煩,就象一個人的煙隱很大,長期下去,得肺癌的幾率要比不吸煙的人大得多。 而使用設(shè)計模式來實現(xiàn)軟件,就相當(dāng)于擁有好的生活習(xí)慣,這樣會使整個軟件系統(tǒng)得到良性的發(fā)展。設(shè)計模式不是必須的,但擁有它使用生活變得更美好。  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計

          公告

          welcome to my place.

          常用鏈接

          留言簿(5)

          我參與的團隊

          隨筆分類

          隨筆檔案

          新聞分類

          石頭JAVA擺地攤兒

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          @duduli
          主站蜘蛛池模板: 穆棱市| 乡宁县| 普洱| 巴彦淖尔市| 永善县| 沛县| 罗平县| 榆树市| 连南| 嘉定区| 安岳县| 杭锦旗| 宁德市| 舞阳县| 株洲市| 宁陵县| 从江县| 永平县| 汉阴县| 靖边县| 达州市| 阿合奇县| 朝阳市| 广宗县| 白水县| 灵山县| 利辛县| 黔南| 丹棱县| 青阳县| 桃园市| 南召县| 彭阳县| 虞城县| 湘西| 昔阳县| 壤塘县| 阿瓦提县| 宜春市| 区。| 东港市|