新聞中心
非常抱歉讓大家等了這么久,這個(gè)系列的第一講才開(kāi)始,呵呵,目錄寫(xiě)出來(lái)后,就是按著目錄一個(gè)一個(gè)的講出來(lái),與大家一起分享我的開(kāi)發(fā)經(jīng)驗(yàn)了,呵呵。

創(chuàng)新互聯(lián)是專業(yè)的連城網(wǎng)站建設(shè)公司,連城接單;提供網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行連城網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
今天主要說(shuō)一下“系統(tǒng)的復(fù)用性離不開(kāi)系統(tǒng)的面向?qū)ο笮浴?,我們可能有一種感覺(jué),那就是在開(kāi)發(fā)一個(gè)項(xiàng)目時(shí)用到了一段代碼塊,在另一個(gè)項(xiàng)目中也用到了,我們通常的作法就是ctrl+C,然后ctrl+V,呵呵,這樣做的好處就是省事,不好的地方也是“不省事”,為什么這樣說(shuō)呢?
省事:因?yàn)樗恍枰紤]什么,只是為了實(shí)現(xiàn)而去實(shí)現(xiàn),而這肯定是不提倡這種方式的,因?yàn)槭褂眠@種方式編程的人,永遠(yuǎn)不會(huì)體會(huì)到其中的樂(lè)趣,可能只是為了工資而去工作。
不省事:在程序的測(cè)試階段,工程師們突然發(fā)現(xiàn)了你復(fù)制的那塊代碼出現(xiàn)問(wèn)題了,可能是性能問(wèn)題,也可能是業(yè)務(wù)問(wèn)題,也可能是。。。,反正是出問(wèn)題了,那你作為一個(gè)負(fù)責(zé)的程序員,會(huì)怎么樣,當(dāng)然是一個(gè)一個(gè)的去改了,同樣是ctrl+C,ctrl+V,但此時(shí)你的一定再后悔,不如把塊代碼,或者那個(gè)方法,再或者那個(gè)類(lèi),再或者那個(gè)項(xiàng)目給抽象了。
今天我就來(lái)說(shuō)一下系統(tǒng)要想得到復(fù)用,必須把系統(tǒng)先進(jìn)行抽象,也就是你的系統(tǒng)代碼要符合面向?qū)ο蟮奶匦?,這個(gè)系列我將會(huì)用最近開(kāi)發(fā)的“通用后臺(tái)系統(tǒng)”做為實(shí)例,講給大家
這個(gè)系統(tǒng)中,用到了4個(gè)解決方案文件夾,我下面來(lái)分別說(shuō)一下它們
一 Project.Common文件夾:它為所有項(xiàng)目提供一個(gè)公用的,不依賴于其它項(xiàng)目的項(xiàng)目集合,如圖:
OnlinePayment:支付功能模塊相關(guān)
Standard:服務(wù)端和端戶端持久化相關(guān)
VCommons:公用功能類(lèi)庫(kù)相關(guān)
VConfig:全局公用配置信息相關(guān)
二 Project.Core文件夾:它是對(duì)N層模型的抽象,將Web(UI),Entity(Model),Data(DAL)等各層的核心公用代碼抽象出來(lái),形成一個(gè)與領(lǐng)域無(wú)關(guān)的項(xiàng)目集合,如圖:
Data.Commons:對(duì)數(shù)據(jù)層的抽象,本例中使用了Linq To SQL做為底層ORM,它同樣適用于Entity Frameworks
Entity.Commons:對(duì)實(shí)體層的抽象,本例中的實(shí)體全部是對(duì)linq to sql原生實(shí)體的擴(kuò)展,這也多謝微軟的partial關(guān)鍵字,并對(duì)實(shí)體賦值進(jìn)行了跟蹤
Web.Commons:對(duì)WEB層的抽象,本例是標(biāo)準(zhǔn)的MVC模式的風(fēng)格,對(duì)controller進(jìn)行了抽象,以極對(duì)公用特性的抽象,如登陸驗(yàn)證等
三 Common.Background文件夾:它是對(duì)標(biāo)準(zhǔn)的后臺(tái)管理系統(tǒng)的抽象,包括最基礎(chǔ)的后臺(tái)基礎(chǔ),有對(duì)用戶,菜單,權(quán)限,部門(mén)等模塊的管理,它適用于所有后臺(tái)項(xiàng)目,如圖:
Common.Background.Data:對(duì)后臺(tái)數(shù)據(jù)層的實(shí)現(xiàn),它繼承自Data.Commons
Common.Background.Entity:對(duì)后臺(tái)實(shí)體層的實(shí)現(xiàn),它繼承自Entity.Commons
Common.Background.Service:后臺(tái)業(yè)務(wù)層的實(shí)現(xiàn),它處理最基礎(chǔ)的業(yè)務(wù)邏輯
Common.Background.Web.Controllers:后臺(tái)UI層的實(shí)現(xiàn),它繼承自Web.Commons
四 個(gè)性化項(xiàng)目文件夾,這個(gè)就是和領(lǐng)域有關(guān)的真正的項(xiàng)目了,它有自己的架構(gòu)標(biāo)準(zhǔn),如圖
我們可以看到,它也是標(biāo)準(zhǔn)的三層架構(gòu),前臺(tái)和后臺(tái)公用Data和Entity層,項(xiàng)目比較簡(jiǎn)單,沒(méi)有使用Service層。
通過(guò)一個(gè)真正項(xiàng)目的解說(shuō),您是否對(duì)如何提高程序的復(fù)用性有一個(gè)比較清晰的認(rèn)識(shí)了呢?
當(dāng)前名稱:架構(gòu)和改善程序復(fù)用性設(shè)計(jì)1:面向?qū)ο笮?
文章起源:http://m.5511xx.com/article/dppcgph.html


咨詢
建站咨詢
