架構和改善程序復用性設計1:面向對象性
非常抱歉讓大家等了這么久,這個系列的第一講才開始,呵呵,目錄寫出來后,就是按著目錄一個一個的講出來,與大家一起分享我的開發經驗了,呵呵。
今天主要說一下“系統的復用性離不開系統的面向對象性”,我們可能有一種感覺,那就是在開發一個項目時用到了一段代碼塊,在另一個項目中也用到了,我們通常的作法就是ctrl+C,然后ctrl+V,呵呵,這樣做的好處就是省事,不好的地方也是“不省事”,為什么這樣說呢?
省事:因為它不需要考慮什么,只是為了實現而去實現,而這肯定是不提倡這種方式的,因為使用這種方式編程的人,永遠不會體會到其中的樂趣,可能只是為了工資而去工作。
不省事:在程序的測試階段,工程師們突然發現了你復制的那塊代碼出現問題了,可能是性能問題,也可能是業務問題,也可能是。。。,反正是出問題了,那你作為一個負責的程序員,會怎么樣,當然是一個一個的去改了,同樣是ctrl+C,ctrl+V,但此時你的一定再后悔,不如把塊代碼,或者那個方法,再或者那個類,再或者那個項目給抽象了。
今天我就來說一下系統要想得到復用,必須把系統先進行抽象,也就是你的系統代碼要符合面向對象的特性,這個系列我將會用最近開發的“通用后臺系統”做為實例,講給大家
這個系統中,用到了4個解決方案文件夾,我下面來分別說一下它們
一 Project.Common文件夾:它為所有項目提供一個公用的,不依賴于其它項目的項目集合,如圖:
OnlinePayment:支付功能模塊相關
Standard:服務端和端戶端持久化相關
VCommons:公用功能類庫相關
VConfig:全局公用配置信息相關
二 Project.Core文件夾:它是對N層模型的抽象,將Web(UI),Entity(Model),Data(DAL)等各層的核心公用代碼抽象出來,形成一個與領域無關的項目集合,如圖:
Data.Commons:對數據層的抽象,本例中使用了Linq To SQL做為底層ORM,它同樣適用于Entity Frameworks
Entity.Commons:對實體層的抽象,本例中的實體全部是對linq to sql原生實體的擴展,這也多謝微軟的partial關鍵字,并對實體賦值進行了跟蹤
Web.Commons:對WEB層的抽象,本例是標準的MVC模式的風格,對controller進行了抽象,以極對公用特性的抽象,如登陸驗證等
三 Common.Background文件夾:它是對標準的后臺管理系統的抽象,包括最基礎的后臺基礎,有對用戶,菜單,權限,部門等模塊的管理,它適用于所有后臺項目,如圖:
Common.Background.Data:對后臺數據層的實現,它繼承自Data.Commons
Common.Background.Entity:對后臺實體層的實現,它繼承自Entity.Commons
Common.Background.Service:后臺業務層的實現,它處理最基礎的業務邏輯
Common.Background.Web.Controllers:后臺UI層的實現,它繼承自Web.Commons
四 個性化項目文件夾,這個就是和領域有關的真正的項目了,它有自己的架構標準,如圖
我們可以看到,它也是標準的三層架構,前臺和后臺公用Data和Entity層,項目比較簡單,沒有使用Service層。
通過一個真正項目的解說,您是否對如何提高程序的復用性有一個比較清晰的認識了呢?
原文鏈接:http://www.cnblogs.com/lori/archive/2012/04/27/2473698.html


2011-07-05 15:22:04
2011-07-05 15:59:57
2011-07-05 16:05:43




