日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

谈谈AOP应用层切面设计

發(fā)布時(shí)間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈AOP应用层切面设计 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.


目錄[-]

  • AOP概要理解糾偏
  • AOP在軟件編程中的應(yīng)用場(chǎng)景
  • 傳統(tǒng)意義上的AOP
  • 非傳統(tǒng)意義上的AOP
  • @紅薯 的開(kāi)源中國(guó)博客1.0
  • @紅薯 的開(kāi)源中國(guó)新聞1.0
  • 初級(jí)AOP方式
  • 高級(jí)AOP方式
  • 終級(jí)解決方案
  • 要解決的問(wèn)題
  • 解決問(wèn)題的思路
  • 更進(jìn)一步的思考
  • 總結(jié)

AOP概要理解糾偏

說(shuō)到AOP,這個(gè)東東現(xiàn)在已經(jīng)不是一個(gè)新詞匯了,我們拿一下百度詞條來(lái)看看是下面的樣子的:

在軟件業(yè),AOP為Aspect Oriented Programming的縮寫(xiě),意為:面向切面編程,通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。AOP是OOP的延續(xù),是軟件開(kāi)發(fā)中的一個(gè)熱點(diǎn),也是Spring框架中的一個(gè)重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用AOP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時(shí)提高了開(kāi)發(fā)的效率。

但是今天我要說(shuō),這個(gè)定義太過(guò)狹義,實(shí)際上AOP的概念要比上面的定義要寬泛得多,今天我就給大家來(lái)扯扯AOP的事兒。

從AOP這三個(gè)單詞來(lái)看,它的定義還是非常準(zhǔn)確的,就是面向切面編程。但是后面的這一堆解釋:

通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。AOP是OOP的延續(xù),是軟件開(kāi)發(fā)中的一個(gè)熱點(diǎn),也是Spring框架中的一個(gè)重要內(nèi)容,是函數(shù)式編程的一種衍生范型。利用AOP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)行隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,提高程序的可重用性,同時(shí)提高了開(kāi)發(fā)的效率。

這明顯是鬼扯了,明顯是把一種具體的實(shí)現(xiàn)作為它定義,這就有點(diǎn)“白馬即馬”的意思了。

主要的變化就是把中間一段與具體的實(shí)現(xiàn)有關(guān)系的部分去掉。

通過(guò)預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。AOP是OOP的延續(xù),是軟件開(kāi)發(fā)中的一個(gè)熱點(diǎn),也是Spring框架中的一個(gè)重要內(nèi)容,是函數(shù)式編程的一種衍生范型。

這一段太過(guò)狹隘,已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足軟件技術(shù)發(fā)展的需要了,面向切面就面向切面,與什么預(yù)編譯的方式有毛關(guān)系?與運(yùn)行期代理有毛關(guān)系?與Spring、函數(shù)式編程有毛關(guān)系?

因此,今天悠然就把AOP的概念重新縷縷:

在軟件業(yè),AOP為Aspect Oriented Programming的縮寫(xiě),意為:面向切面編程,通過(guò)對(duì)某一領(lǐng)域進(jìn)行高內(nèi)聚低偶合方式進(jìn)行實(shí)現(xiàn),并通過(guò)非偶合的方式與其它業(yè)務(wù)邏輯進(jìn)行整合,以對(duì)不同切面的實(shí)現(xiàn)邏輯進(jìn)行隔離,從而使得不同領(lǐng)域的實(shí)現(xiàn)邏輯之間的耦合度降低,提高程序的可重用性、提高開(kāi)發(fā)效率,同時(shí)也大大降低集成與整合難度的一種編程方法。

嗯嗯,雖然不一定嚴(yán)謹(jǐn),但是比原來(lái)的廣泛多了,也更能體現(xiàn)AOP的真正意涵。它不僅包含原有定義里的模式,還包含各種各樣其它AOP模式,今天悠然就來(lái)給大家試著闡述一下。

AOP在軟件編程中的應(yīng)用場(chǎng)景

傳統(tǒng)意義上的AOP

傳統(tǒng)意義上的AOP,是針對(duì)業(yè)務(wù)處理過(guò)程中的切面進(jìn)行提取,它所面對(duì)的是處理過(guò)程中的某個(gè)步驟或階段,來(lái)獲得邏輯過(guò)程中各部分之間低耦合性的一些隔離效率,比如:常見(jiàn)的應(yīng)用場(chǎng)景有:

  • Authentication 權(quán)限
  • Caching緩存
  • Context passing內(nèi)容傳遞
  • Error handling 錯(cuò)誤處理
  • Lazy loading 延時(shí)加載
  • Debugging 調(diào)試
  • logging, tracing, profiling and monitoring 記錄跟蹤 優(yōu)化 校準(zhǔn)
  • Performance optimization性能優(yōu)化
  • Persistence 持久化
  • Resource pooling資源池
  • Synchronization 同步
  • Transactions事務(wù)
  • 全文索引
  • 等等
  • 確實(shí),AOP的應(yīng)用場(chǎng)景有許多許多,也取得了良好的應(yīng)用效果,這個(gè)已經(jīng)經(jīng)過(guò)了充分的實(shí)踐,許多書(shū)里也都進(jìn)行了充分的闡述,這里不再贅述。

    非傳統(tǒng)意義上的AOP

    嗯嗯,今天的重點(diǎn)是這里,別人說(shuō)得好的地方悠然說(shuō)不過(guò),因此最好的辦法就是不說(shuō),悠然說(shuō)別人不說(shuō)的地方,這樣就壓力小多了:)

    以下針對(duì)@紅薯 的猜測(cè)純屬臆斷,如有雷同純屬巧合:

    在正式開(kāi)始之前,我們來(lái)舉個(gè)實(shí)踐場(chǎng)景:

    @紅薯 的開(kāi)源中國(guó)博客1.0

    話說(shuō),在開(kāi)源中國(guó)的博客列表中,每一篇博客是像下面一樣展示的:

    從這一塊內(nèi)容中,我們可以看到如下內(nèi)容:

  • 原創(chuàng)的圖標(biāo)
  • 置頂?shù)膱D標(biāo)
  • 博客的標(biāo)題
  • 博客的分類
  • 博客的統(tǒng)計(jì)信息30評(píng)、2594閱、7贊
  • 博客的編輯、刪除
  • 我們從看到的這些信息里面,可以猜一下@紅薯 的表結(jié)果是怎么設(shè)計(jì)的:

    表BLOG結(jié)構(gòu):

    • 博客標(biāo)識(shí)
    • 博客標(biāo)題
    • 博客標(biāo)題內(nèi)容
    • 是否原創(chuàng)
    • 是否置頂
    • 評(píng)論次數(shù)
    • 閱讀次數(shù)
    • 獲贊次數(shù)
    • ....

    當(dāng)然這里應(yīng)該也有一些其他的字段,我們上面的圖片里看不到,我們就當(dāng)它們不存在。

    我們?cè)傧胂?#xff0c;估計(jì)@紅薯 還有詳細(xì)的記錄,比如:誰(shuí)評(píng)論的,評(píng)論的內(nèi)容是什么?誰(shuí)閱讀的,是什么時(shí)候閱讀的?誰(shuí)點(diǎn)贊的,是什么時(shí)候點(diǎn)贊的

    于是就有了下面的表:

    ? ? 評(píng)論詳情:

    • 博客標(biāo)識(shí)
    • 評(píng)論者
    • 評(píng)論時(shí)間
    • 評(píng)論內(nèi)容
    • ...

    ? ? 閱讀詳情:

    • 博客標(biāo)識(shí)
    • 閱讀者
    • 閱讀時(shí)間

    ? ? 點(diǎn)贊詳情:

    • 博客標(biāo)識(shí)
    • 點(diǎn)贊者
    • 點(diǎn)贊時(shí)間

    嗯嗯,@紅薯 仔細(xì)想了一想感覺(jué)差不多了的樣子,這個(gè)時(shí)候@紅薯 縷著他的頭發(fā),點(diǎn)上一支煙進(jìn)入了寫(xiě)代碼的酸爽狀態(tài)。

    比如,功能是這樣寫(xiě)的:

    ?
    1 2 3 4 5 6 7 8 9 10 11 12 //博客點(diǎn)贊 保存點(diǎn)贊(博客標(biāo)識(shí),點(diǎn)贊者標(biāo)識(shí)){ ????博客biz.添加點(diǎn)贊(博客標(biāo)識(shí),點(diǎn)贊者標(biāo)識(shí)); } class博客biz{ ?????添加點(diǎn)贊(博客標(biāo)識(shí),點(diǎn)贊者標(biāo)識(shí)){ ??????????博客dao.增加點(diǎn)贊數(shù)(博客標(biāo)識(shí)); ??????????點(diǎn)贊詳情dao.增加點(diǎn)贊詳情(博客標(biāo)識(shí),點(diǎn)贊者標(biāo)識(shí)); ?????} }

    伴隨著一陣陣歡快的噼里啪啦鍵盤(pán)聲,開(kāi)源中國(guó)博客1.0 OK了。

    @紅薯 的開(kāi)源中國(guó)新聞1.0

    看著開(kāi)源中國(guó)博客1.0的穩(wěn)步運(yùn)行,PV+UV雙豐收,@紅薯 縷著頭發(fā)咧著大板牙笑開(kāi)了花,那就再整個(gè)開(kāi)源中國(guó)新聞1.0唄!?

    于是紅薯開(kāi)始設(shè)計(jì)表結(jié)構(gòu):

    表NEWS結(jié)構(gòu):

    • 新聞標(biāo)識(shí)
    • 新聞標(biāo)題
    • 新聞標(biāo)題內(nèi)容
    • 是否置頂
    • 評(píng)論次數(shù)
    • 閱讀次數(shù)
    • 獲贊次數(shù)
    • ....

    當(dāng)然,考慮到新聞也有點(diǎn)贊,也有評(píng)語(yǔ),也有閱讀,于是下面的表結(jié)構(gòu)也是需要的:

    ? ? 評(píng)論詳情:

    • 新聞標(biāo)識(shí)
    • 評(píng)論者
    • 評(píng)論時(shí)間
    • 評(píng)論內(nèi)容
    • ...

    ? ? 閱讀詳情:

    • 新聞標(biāo)識(shí)
    • 閱讀者
    • 閱讀時(shí)間

    ? ? 點(diǎn)贊詳情:

    • 新聞標(biāo)識(shí)
    • 點(diǎn)贊者
    • 點(diǎn)贊時(shí)間

    嗯嗯,紅薯看了下,尼瑪除了少個(gè)原創(chuàng),別的都差不多的樣子么,但是不一樣還是不一樣的,那就再做一遍吧,于是一陣陣噼里啪啦之后又搞定了,紅薯抹著汗水,再仔細(xì)看一下代碼,尼瑪,怎么這兩邊的代碼幾乎一樣?感覺(jué)哪里有些不對(duì)的樣子。

    管呢,先運(yùn)行起來(lái)再說(shuō),哥去泡個(gè)妹子放松一下,于是紅薯打開(kāi)了MAC,IPAD,IPHONE7S....

    初級(jí)AOP方式

    運(yùn)行了一段時(shí)間,紅薯覺(jué)得要加個(gè)動(dòng)態(tài)功能,發(fā)現(xiàn)要在兩邊都增加代碼,越來(lái)越覺(jué)得不對(duì)勁,于是拿起新買(mǎi)的《企業(yè)級(jí)JavaEE架構(gòu)實(shí)踐》翻看起來(lái),唉當(dāng)時(shí)看書(shū)的時(shí)候不仔細(xì),這個(gè)用切面來(lái)解決不是挺好的?

    于是紅薯把表結(jié)構(gòu)重構(gòu)了一下:

    ? ? 評(píng)論詳情:

    • 評(píng)論類型
    • 評(píng)論對(duì)象標(biāo)識(shí)
    • 評(píng)論者
    • 評(píng)論時(shí)間
    • 評(píng)論內(nèi)容
    • ...

    ? ? 閱讀詳情:

    • 閱讀類型
    • 閱讀對(duì)象標(biāo)識(shí)
    • 閱讀者
    • 閱讀時(shí)間

    ? ? 點(diǎn)贊詳情:

    • 點(diǎn)贊類型
    • 點(diǎn)贊對(duì)象標(biāo)識(shí)
    • 點(diǎn)贊者
    • 點(diǎn)贊時(shí)間

    另外增加一個(gè)動(dòng)態(tài)表

    • 動(dòng)態(tài)類型
    • 動(dòng)態(tài)對(duì)象標(biāo)識(shí)
    • 動(dòng)態(tài)者
    • 動(dòng)態(tài)時(shí)間
    于是紅薯把原來(lái)的代碼重構(gòu)了一下,把原來(lái)重復(fù)做了兩遍的的評(píng)論、閱讀、點(diǎn)贊都抽到了一個(gè)里面,然后把原來(lái)在業(yè)務(wù)代碼里調(diào)用相關(guān)評(píng)論、閱讀、點(diǎn)贊的業(yè)務(wù)邏輯都抽到了切面當(dāng)中。嗯嗯,紅薯感覺(jué)棒極了,腦海中又出現(xiàn)了妹子的身影,對(duì)了,IPHONE8P哪里去了??

    高級(jí)AOP方式

    自從引入了切面功能,紅薯的工作明顯輕松多了,但是唯一不爽的是?隨著開(kāi)源中國(guó)的用戶越來(lái)越多,投資人要求功能方面也要快速推進(jìn),現(xiàn)在的紅薯幾乎已經(jīng)沒(méi)有可以縷的頭發(fā)了,投資人要增加日歷、要增加勛章、要增加TAG、要增加提醒,要增加的東西越來(lái)越多,同時(shí)開(kāi)源中國(guó)的訪問(wèn)者們的眼界又越來(lái)越寬了,要求越來(lái)越高了,今天這個(gè)做的丑了,明天那個(gè)做得不人性化了,?紅薯開(kāi)發(fā)、測(cè)試、發(fā)布、切面配置、界面調(diào)整、控制層啥都要做,這不又出問(wèn)題了:


    紅薯的手習(xí)慣的抬起來(lái)縷頭發(fā)了,但是隨著OSC功能的增加,頭發(fā)已經(jīng)幾乎找不到了,紅薯狠的把煙屁股擰進(jìn)煙灰缸,是要徹底解決這個(gè)問(wèn)題了,看起來(lái)還得讀書(shū)啊,再翻企業(yè)級(jí)JavaEE架構(gòu)實(shí)踐,看看有沒(méi)有啥思路。

    Think Big, Start small , Scale Fast.

    這是什么鬼??
    好的軟件是品出來(lái)的。
    品個(gè)屁,現(xiàn)在解決問(wèn)題才是正點(diǎn),能不能讓我不要每次都改這么多東西?再翻翻目錄,看看有啥值得研究的?

    仔細(xì)看了幾遍,紅薯的眼睛忽然亮了起來(lái),只要把所有的評(píng)論、點(diǎn)贊、評(píng)論、動(dòng)態(tài)、以及其它雜7雜8的東西都讓它高內(nèi)聚,低耦合,我做博客只管做博客、做新聞只管做新聞,哪怕再做他多少個(gè),也是僅僅關(guān)注我要做的東西,而把這些東西都做成一個(gè)個(gè)的切面讓這些切面去完整的解決這些問(wèn)題,這樣我不就輕松了?原來(lái)雖然也引入了AOP技術(shù),但是由于只是初級(jí)切面,所以只解決了部分問(wèn)題,并沒(méi)有徹底的解決問(wèn)題。如果我能把切面也切到控制層、界面層,這樣就可以真正的做到高內(nèi)聚、松耦合,而且是真正的業(yè)務(wù)切面。

    技術(shù)的切面還是初級(jí)的,業(yè)務(wù)層級(jí)的切面才是終級(jí)的。

    具體實(shí)現(xiàn)起來(lái),還是沒(méi)有什么思路,聽(tīng)聽(tīng)悠然有沒(méi)有什么思路?

    終級(jí)解決方案

    通過(guò)上面對(duì)開(kāi)源中國(guó)兩個(gè)功能模塊的分析,我們大致清楚了問(wèn)題的癥結(jié)所在,并通過(guò)對(duì)紅薯的心路歷程進(jìn)行分析,大致引入了問(wèn)題的解決思路,但是真正的落地卻不是那么簡(jiǎn)單的。一個(gè)問(wèn)題的抽象的程度越高,其通用性越好,但是它的易理解程度和易實(shí)現(xiàn)程度也就越難。我對(duì)實(shí)現(xiàn)者面對(duì)面多次溝通這個(gè)思路時(shí),更多的時(shí)候看到的是他們茫然的眼神,以及多次感覺(jué)理解了,但是真正實(shí)現(xiàn)的時(shí)候卻又達(dá)不到要求,直到許多次反復(fù)之后,才慢慢進(jìn)入狀態(tài)。

    所以我會(huì)盡力講清楚,但是不能保證你一定能理解到我內(nèi)心所想。

    要解決的問(wèn)題

    我們?cè)趹?yīng)用開(kāi)發(fā)過(guò)程中,一部分是與具體的業(yè)務(wù)相關(guān)的,另外一部分它與具體的業(yè)務(wù)并不相關(guān),但是在業(yè)務(wù)過(guò)程中又是有這樣那樣關(guān)系的。如果我們能把這些與具體業(yè)務(wù)沒(méi)有直接關(guān)系,但又是對(duì)業(yè)務(wù)數(shù)據(jù)的一種維度的補(bǔ)充或描述能獨(dú)立出來(lái),想用或不想用僅在一念間,那么這個(gè)時(shí)候做軟件就是一種享受了,而且業(yè)務(wù)和切面都可以獨(dú)立變化,而不必考慮彼此的影響。

    這個(gè)時(shí)候從開(kāi)發(fā)效率來(lái)說(shuō),由于大家各自高內(nèi)聚低耦合,所以開(kāi)發(fā)、測(cè)試、驗(yàn)證、發(fā)布都會(huì)方便快速許多,集成的時(shí)候由于也不必有配置和代碼及界面上的協(xié)作和引用,這樣就可以大大的降低系統(tǒng)集成過(guò)程中的開(kāi)發(fā)、測(cè)試工作,也避免了由此導(dǎo)致的一系列的可能出現(xiàn)的問(wèn)題。

    那么接下來(lái),我們就用上面分析問(wèn)題時(shí)的例子來(lái)闡述,如何解決這個(gè)問(wèn)題,整個(gè)實(shí)現(xiàn)思路采用Tiny框架相關(guān)技術(shù)進(jìn)行解決,非TINY技術(shù)平臺(tái)或框架也是可以實(shí)現(xiàn)的,當(dāng)然實(shí)現(xiàn)細(xì)節(jié)可能會(huì)有不同,需要相關(guān)的架構(gòu)師進(jìn)行相應(yīng)的調(diào)整。

    解決問(wèn)題的思路

    每個(gè)切面的內(nèi)容都在自己的業(yè)務(wù)單元中實(shí)現(xiàn),同時(shí)要能在能出來(lái)的時(shí)候它就能出來(lái)。

    這里我們就拿上面說(shuō)的一個(gè)場(chǎng)景"評(píng)論"來(lái)示例

    ?? 評(píng)論詳情:

    • 評(píng)論類型
    • 評(píng)論對(duì)象標(biāo)識(shí)
    • 評(píng)論者
    • 評(píng)論時(shí)間
    • 評(píng)論內(nèi)容
    圍繞著這個(gè),當(dāng)可以可以知道它的DAO層代碼怎么寫(xiě),邏輯層代碼怎么寫(xiě)(如果是SOA體系還有服務(wù)層代碼怎么寫(xiě)),最后還有就是界面層的部分。

    既然是高內(nèi)聚低耦合,那當(dāng)然主是要統(tǒng)一界面的樣式。

    評(píng)價(jià)的使用場(chǎng)景一般來(lái)說(shuō)是在顯示完主要業(yè)務(wù)內(nèi)容之后(如:博客、新聞、文檔、軟件、etc),可以進(jìn)行評(píng)論,可以進(jìn)行回復(fù),可以進(jìn)行引入,當(dāng)然也要能把已經(jīng)評(píng)論的內(nèi)容顯示出來(lái)。

    但是需要搞清楚的是,這些內(nèi)容的展現(xiàn)與人機(jī)交互過(guò)程明顯與不同的業(yè)務(wù)內(nèi)容沒(méi)有一點(diǎn)關(guān)系,這也就為進(jìn)行切面提供了基礎(chǔ)。為了便于進(jìn)行說(shuō)明問(wèn)題,這里采用AJAX模式進(jìn)行解釋,雖然采用非AJAX方式也是可以解釋得通的,但是應(yīng)用到的技術(shù)的復(fù)雜度與解釋起來(lái)的困難都非常更加復(fù)雜。

    舉個(gè)例子,做出來(lái)的效果是類似下面的樣子:

    這個(gè)時(shí)候,問(wèn)題就轉(zhuǎn)換為,如何把當(dāng)前要處理的業(yè)務(wù)類型和業(yè)務(wù)數(shù)據(jù)的標(biāo)識(shí)讓評(píng)論部分知曉,這個(gè)也非常簡(jiǎn)單,只要用下面的樣子寫(xiě)一段模板即可:

    ?
    1 #comment("BLOG",blog.blogId)
    上面的模板語(yǔ)言是指:現(xiàn)在我是在給一個(gè)BLOG類型的業(yè)務(wù)對(duì)象做評(píng)論,業(yè)務(wù)對(duì)象的標(biāo)識(shí)是blog對(duì)象的blogId屬性。

    嗯嗯,這個(gè)時(shí)候較以前的開(kāi)發(fā),已經(jīng)省了非常大的工作量了,只是簡(jiǎn)單的聲明一下就可以了。

    更進(jìn)一步的思考

    雖然上面的思路已經(jīng)比較好的解決了問(wèn)題,但是這里有一個(gè)問(wèn)題:那就是實(shí)現(xiàn)時(shí)序問(wèn)題。

    也就是說(shuō),博客功能是紅薯先加的,而評(píng)論功能是紅薯后加的。這里就出現(xiàn)一個(gè)問(wèn)題:為什么后增加的功能,需要我在已經(jīng)實(shí)現(xiàn)的妥妥的功能要進(jìn)行調(diào)整??這豈不是說(shuō),你后面不斷的增加功能,我這里都要不斷的進(jìn)行聲明?雖然也有一定的道理,但是是不符合好萊塢原則的。實(shí)際上也是違反常理的===我是先來(lái)的,為什么要為你一個(gè)后到的做調(diào)整?我根本就不知道你的存在好么?!

    出于我們對(duì)完美架構(gòu)的追求以前我們不將就的態(tài)度,我們當(dāng)然要更好的解決此問(wèn)題。

    我們可以在應(yīng)用當(dāng)中預(yù)設(shè)一些擴(kuò)展點(diǎn),但是具體擴(kuò)展些什么東西我是不管的。

    這個(gè)時(shí)候,我們就可以只在界面中增加如下的一段模板語(yǔ)言:

    ?
    1 #extendPoint("VIEW","BLOG",blog.blogId)

    上面的腳本表示,我這里是一個(gè)VIEW類型的擴(kuò)展點(diǎn),業(yè)務(wù)類型是BLOG,業(yè)務(wù)對(duì)象標(biāo)識(shí)是blog對(duì)象的blogId屬性。

    然后由extendPoint決定往里面塞哪些東西。

    這個(gè)時(shí)候,我只要在評(píng)論工程里增加如下的配置:

    ?
    1 2 3 4 5 <extend-points> ????<extend-pointtype="page"order="10"> ????????#comment(bizType,bizId) ????</extend-point> </extend-points>
    然后如果這個(gè)時(shí)候,我們又要增加一個(gè)留腳印的功能

    我們只要增加一個(gè)留腳本的功能模塊,在這個(gè)模塊中增加下面的配置:

    ?
    1 2 3 4 5 <extend-points> ????<extend-pointtype="page"order="9"> ????????#footprint(bizType,bizId) ????</extend-point> </extend-points>

    總結(jié)

    通過(guò)上面的改進(jìn),紅薯同學(xué)再也不用薅頭發(fā)了,原有的業(yè)務(wù)代碼再也不用動(dòng),這功能居然自動(dòng)在所有功能中自動(dòng)出現(xiàn)了。

    想到這里,悠然就深深的自責(zé),早點(diǎn)給紅薯出主意,紅薯同學(xué)的一頭黑發(fā)就留下來(lái)了。

    當(dāng)然,上面只是說(shuō)了一個(gè)思想,真正的實(shí)現(xiàn)的時(shí)候用到的技術(shù)還是非常多的:
    • 模塊化
    • AOP
    • SOA(如果是互聯(lián)網(wǎng)應(yīng)用是需要的,普通的小工程可以不用)
    • 模板語(yǔ)言或類似技術(shù)

    如果本人沒(méi)有說(shuō)清楚,或者讀者朋友們沒(méi)有理解,本人深感自責(zé),也希望同學(xué)們能夠理解,并在下面的回復(fù)博客提問(wèn),本人定盡力給出解釋。


    原文地址:?http://my.oschina.net/tinyframework/blog/604644

    總結(jié)

    以上是生活随笔為你收集整理的谈谈AOP应用层切面设计的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。