這幾天寫程序。突然想起一個(gè)問題。我到底是在寫面向?qū)ο蟮某绦蜻€是面向數(shù)據(jù)的程序。這個(gè)程序的整體設(shè)計(jì)上從數(shù)據(jù)庫開始的。可以說從數(shù)據(jù)庫設(shè)計(jì)完成的那一刻程序就已經(jīng)定型了。DAO層,BIZ業(yè)務(wù)層,ACTION表現(xiàn)層。我不厭其煩地寫著。突然想起了以前學(xué)JAVA的 情景。跟現(xiàn)在完全是兩回事。那寫程序是否需要面向?qū)ο竽亍C嫦驅(qū)ο蟮?意義在哪?
到現(xiàn)在為止。我寫的很多程序都是從數(shù)據(jù)庫開始設(shè)計(jì)。導(dǎo)致程序過于面向數(shù)據(jù)。以數(shù)據(jù)為中心。而不是對象了。或許有人會(huì)說就是以對象為中心 。但是別忘了。我們在剛學(xué) JAVA的時(shí)候?qū)W的那些。一切皆對象。現(xiàn)在的設(shè)計(jì)。打個(gè)比方。如果有一個(gè)Order(訂單 )類型的。下訂單的時(shí)候訂單狀態(tài)為“新創(chuàng)建”,然后收到貨款就是“已確認(rèn)”。。等等狀態(tài) 。按照我現(xiàn)在的程序框架寫的話就是把轉(zhuǎn)換狀態(tài)的代碼寫在Biz業(yè)務(wù)里去。因?yàn)檫@些是業(yè)務(wù)的 一部分 。但是事實(shí)上,這些本該是Order所應(yīng)該具有的行為,一張訂單。可以改變自身的狀態(tài),在是符合面向?qū)ο蟮脑O(shè)計(jì)的。任何對象都有行為及其屬性,而現(xiàn)在人們用的 Hibernate映射把Entity映射成無行為的對象。我不敢說它錯(cuò)了。但是至少這樣會(huì)使人們不知不覺吧行為放在另一個(gè)對象中 。而這就是所謂的數(shù)據(jù)訪問對象 。說到底。還是以數(shù)據(jù)為中心的思想根深蒂固。從學(xué)J2EE的那一刻起,我就被不斷地傳輸這分層的概念,把數(shù)據(jù)訪問和業(yè)務(wù)流程分開成了每天都必修課,但是其實(shí)只要做有什么好處呢。除了使代碼更加冗余。人們不斷地強(qiáng)調(diào)可維護(hù)。可擴(kuò)展。但是面向?qū)ο蟮脑O(shè)計(jì)不久是更容易理解嗎。更容易理解的東西比任何多余的其他動(dòng)作更容易擴(kuò)展。
我知道我的想法還不成熟。分層開發(fā)有它的好處所在。比如協(xié)作開發(fā)。更好的可測試性。更好的延展性。但是其實(shí)面向?qū)ο笈c分層開發(fā)并不矛盾。MVC。經(jīng)典的分層模式,其M層并不是被定義成數(shù)據(jù)訪問層。所以在M層有很多可挖掘的面向?qū)ο蟮乃枷搿作為翻譯。V展現(xiàn)出對象的狀態(tài)。
這次設(shè)計(jì)很失敗 。哈哈 。不過要以此為鑒。不斷提高。。我知道我說的不全是對的。也可能全是錯(cuò)的。。誠心向各位請教 。
致謝。。

文章來源:http://www.aygfsteel.com/phyeas/archive/2008/07/21/216267.html
到現(xiàn)在為止。我寫的很多程序都是從數(shù)據(jù)庫開始設(shè)計(jì)。導(dǎo)致程序過于面向數(shù)據(jù)。以數(shù)據(jù)為中心。而不是對象了。或許有人會(huì)說就是以對象為中心 。但是別忘了。我們在剛學(xué) JAVA的時(shí)候?qū)W的那些。一切皆對象。現(xiàn)在的設(shè)計(jì)。打個(gè)比方。如果有一個(gè)Order(訂單 )類型的。下訂單的時(shí)候訂單狀態(tài)為“新創(chuàng)建”,然后收到貨款就是“已確認(rèn)”。。等等狀態(tài) 。按照我現(xiàn)在的程序框架寫的話就是把轉(zhuǎn)換狀態(tài)的代碼寫在Biz業(yè)務(wù)里去。因?yàn)檫@些是業(yè)務(wù)的 一部分 。但是事實(shí)上,這些本該是Order所應(yīng)該具有的行為,一張訂單。可以改變自身的狀態(tài),在是符合面向?qū)ο蟮脑O(shè)計(jì)的。任何對象都有行為及其屬性,而現(xiàn)在人們用的 Hibernate映射把Entity映射成無行為的對象。我不敢說它錯(cuò)了。但是至少這樣會(huì)使人們不知不覺吧行為放在另一個(gè)對象中 。而這就是所謂的數(shù)據(jù)訪問對象 。說到底。還是以數(shù)據(jù)為中心的思想根深蒂固。從學(xué)J2EE的那一刻起,我就被不斷地傳輸這分層的概念,把數(shù)據(jù)訪問和業(yè)務(wù)流程分開成了每天都必修課,但是其實(shí)只要做有什么好處呢。除了使代碼更加冗余。人們不斷地強(qiáng)調(diào)可維護(hù)。可擴(kuò)展。但是面向?qū)ο蟮脑O(shè)計(jì)不久是更容易理解嗎。更容易理解的東西比任何多余的其他動(dòng)作更容易擴(kuò)展。
我知道我的想法還不成熟。分層開發(fā)有它的好處所在。比如協(xié)作開發(fā)。更好的可測試性。更好的延展性。但是其實(shí)面向?qū)ο笈c分層開發(fā)并不矛盾。MVC。經(jīng)典的分層模式,其M層并不是被定義成數(shù)據(jù)訪問層。所以在M層有很多可挖掘的面向?qū)ο蟮乃枷搿作為翻譯。V展現(xiàn)出對象的狀態(tài)。
這次設(shè)計(jì)很失敗 。哈哈 。不過要以此為鑒。不斷提高。。我知道我說的不全是對的。也可能全是錯(cuò)的。。誠心向各位請教 。
致謝。。
文章來源:http://www.aygfsteel.com/phyeas/archive/2008/07/21/216267.html