這幾天寫程序。突然想起一個問題。我到底是在寫面向對象的程序還是面向數據的程序。這個程序的整體設計上從數據庫開始的。可以說從數據庫設計完成的那一刻程序就已經定型了。DAO層,BIZ業務層,ACTION表現層。我不厭其煩地寫著。突然想起了以前學JAVA的 情景。跟現在完全是兩回事。那寫程序是否需要面向對象呢。面向對象的 意義在哪?
到現在為止。我寫的很多程序都是從數據庫開始設計。導致程序過于面向數據。以數據為中心。而不是對象了。或許有人會說就是以對象為中心 。但是別忘了。我們在剛學 JAVA的時候學的那些。一切皆對象。現在的設計。打個比方。如果有一個Order(訂單 )類型的。下訂單的時候訂單狀態為“新創建”,然后收到貨款就是“已確認”。。等等狀態 。按照我現在的程序框架寫的話就是把轉換狀態的代碼寫在Biz業務里去。因為這些是業務的 一部分 。但是事實上,這些本該是Order所應該具有的行為,一張訂單。可以改變自身的狀態,在是符合面向對象的設計的。任何對象都有行為及其屬性,而現在人們用的 Hibernate映射把Entity映射成無行為的對象。我不敢說它錯了。但是至少這樣會使人們不知不覺吧行為放在另一個對象中 。而這就是所謂的數據訪問對象 。說到底。還是以數據為中心的思想根深蒂固。從學J2EE的那一刻起,我就被不斷地傳輸這分層的概念,把數據訪問和業務流程分開成了每天都必修課,但是其實只要做有什么好處呢。除了使代碼更加冗余。人們不斷地強調可維護。可擴展。但是面向對象的設計不久是更容易理解嗎。更容易理解的東西比任何多余的其他動作更容易擴展。
我知道我的想法還不成熟。分層開發有它的好處所在。比如協作開發。更好的可測試性。更好的延展性。但是其實面向對象與分層開發并不矛盾。MVC。經典的分層模式,其M層并不是被定義成數據訪問層。所以在M層有很多可挖掘的面向對象的思想。C作為翻譯。V展現出對象的狀態。
這次設計很失敗 。哈哈 。不過要以此為鑒。不斷提高。。我知道我說的不全是對的。也可能全是錯的。。誠心向各位請教 。
致謝。。
posted on 2008-07-21 00:03
phyeas 阅读(230)
评论(0) 编辑 收藏