<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    AOP之我見(jiàn)

    近來(lái)研究AOP,在了解其實(shí)現(xiàn)如AspectJSpring等之余,也多了些思索.

    早晨一覺(jué)醒來(lái),頓覺(jué)精神氣爽,再看時(shí)間還早,也就躺床上閉目養(yǎng)神.而思維此時(shí)卻象脫韁的野馬,縱橫馳騁,不知不覺(jué)就想到我所從事和鐘愛(ài)的軟件上來(lái).忽發(fā)奇想:其實(shí)軟件的最終目標(biāo)就是模擬真實(shí)世界,甚至進(jìn)一步說(shuō)就是創(chuàng)造世界(看過(guò)Matrix的朋友應(yīng)該能理解).所以OOP,AOP或今后將出現(xiàn)的什么新的軟件思想也都只是這一進(jìn)程中的小浪花而已,而他們的出現(xiàn)及發(fā)展,也就是為了更好的模擬我們的生活.

           OOP的出現(xiàn)之所以被稱為一個(gè)很大的突破,正因?yàn)樗艽蟪潭壬戏鲜澜绲臉?gòu)成.java “Everything is object”之說(shuō),正是有了Object這個(gè)有利的武器,使得我們?cè)谟?/SPAN>OOP表現(xiàn)世界的某些方面時(shí)能夠得心應(yīng)手.但我們世界除了Object還有很多其它的東西,比如道德,法律,規(guī)范,規(guī)律……AOP的出現(xiàn)正是模擬這些方面.

           以我們最熟悉的對(duì)象作為考察的對(duì)象.人做為對(duì)象由多個(gè)對(duì)象組成,如手,眼……我們作為世界的個(gè)體,首先守很多規(guī)律的制約.如萬(wàn)有引力定律,牛頓三大定律……這些規(guī)律是無(wú)處不在的,任何人都無(wú)法去避免或改變.還有法律,這是人為擬定的對(duì)某些個(gè)體具有約束性的規(guī)范,如果相應(yīng)個(gè)體違法,則會(huì)受到法律的制裁.注意這里是某些個(gè)體”,各國(guó)的法律只在本國(guó)范圍內(nèi)有效,不同的法律又有不同的受眾.這樣對(duì)個(gè)體而言,你就受到某些法律的約束.你知道法律可以決定去遵守或違背它,而你不知道,法律也是客觀存在,你不去違背,可能根本感受不到它,而在你即使毫不知情的情況下違背時(shí),它也會(huì)顯示它的威力.至于如道德或規(guī)范等,其強(qiáng)制性不如法律,但就與個(gè)體的相互關(guān)系而言其實(shí)與法律完全一樣.

           如果從程序的角度來(lái)實(shí)現(xiàn)上面的相互關(guān)系.僅用OOP的思想,就會(huì)非常的困難.先說(shuō)這些定律,他們無(wú)時(shí)不在,無(wú)處不在,只是看什么定律對(duì)你當(dāng)前的行為有影響.如你要上上網(wǎng),聽(tīng)聽(tīng)歌,可能感受不到萬(wàn)有引力定律和牛頓定律的存在,而你要從12層的樓往下跳試試,萬(wàn)有引力定律和牛頓定律直接決定了你的生死.用程序?qū)崿F(xiàn)上上網(wǎng),聽(tīng)聽(tīng)歌或跳跳樓都可做到.你聽(tīng)歌可以計(jì)算對(duì)耳膜的震動(dòng)量,音樂(lè)對(duì)你神經(jīng)的刺激量;上網(wǎng)可以計(jì)算你頸部僵硬時(shí)間的長(zhǎng)短,計(jì)算你網(wǎng)上泡mm的興奮度;跳樓則根據(jù)萬(wàn)有引力定律計(jì)算你墜地時(shí)的速度和對(duì)身體觸地部位的沖量.在這些行為中,人是同一個(gè)人,也就是同一個(gè)對(duì)象,只是行為不同,也就是方法不同.那執(zhí)行不同的方法時(shí)要遵循不同的定律.如果用OO的思想我們把定律抽象為對(duì)象,則定律起作用就是定律對(duì)象的方法被調(diào)用.同一個(gè)對(duì)象,在調(diào)用不同的方法時(shí),要明確什么定律起主要作用,就必須要把相應(yīng)定律接口申明到自己方法體中去.這樣就形成了耦合!當(dāng)然使用Design Pattern能將這種耦合變成松耦合,如使用Observer模式,但即使這樣也會(huì)有很多的問(wèn)題:如果同時(shí)多個(gè)定律起作用,或定律起作用有先后順序,或這些定律沒(méi)法形成一個(gè)統(tǒng)一的父類接口……還有observer模式其實(shí)也是主動(dòng)的模式,它依賴于對(duì)象要主動(dòng)notify這些observer.

    更有意思的是,如果一只雞或一只鴨從樓上掉下去,它也要遵守萬(wàn)有引力定律和牛頓定律,而且計(jì)算方式與人完全一樣.如果用OOP的思想,一是使用繼承,定義一個(gè)父類,由它實(shí)現(xiàn)高處落下時(shí)的邏輯,這樣子類就可以自動(dòng)獲得這些邏輯,但這樣勢(shì)必將因?yàn)橛绊懶袨榈亩傻膹?fù)雜性,而帶來(lái)類層次的復(fù)雜性;二是使用代理,東西由高處落下就交給一個(gè)delegate對(duì)象去處理,而這樣需要多少種delegate對(duì)象,每用一個(gè)delegate對(duì)象,就意味著當(dāng)前對(duì)象耦合了一個(gè)delegate對(duì)象,結(jié)果對(duì)象的耦合性越來(lái)越強(qiáng).

    那么換個(gè)角度想,如果真有一個(gè)上帝,它監(jiān)控著所有的對(duì)象,只要某一個(gè)對(duì)象從高處落下,它就把萬(wàn)有引力定律和牛頓定律用到這個(gè)對(duì)象身上,而不管這個(gè)對(duì)象是否知道這兩個(gè)定律.這樣對(duì)象與這兩個(gè)定律完全解耦合,它只管做自己的事,比如一個(gè)人從窗臺(tái)跳下去, 萬(wàn)有引力定律和牛頓定律也起作用,但他沒(méi)有什么損傷,接著就騎輛車(chē)上街去了……上街是這個(gè)人的主要目的,跳窗臺(tái)也許是為圖一時(shí)方便,下次他也許就不跳了.但只要他跳了,就得由上帝用萬(wàn)有引力定律和牛頓定律計(jì)算一下,如果窗臺(tái)很高,計(jì)算結(jié)果或許就是他骨折了,只能躺醫(yī)院去.這個(gè)上帝就是自然規(guī)律.我們可能感覺(jué)不到它的存在,但它確實(shí)在那里,只要條件被觸發(fā),它就會(huì)起作用,不依賴于任何個(gè)體.

    AOP正是這個(gè)上帝在程序世界的體現(xiàn).一個(gè)Aspect就是一條定律或規(guī)范及其執(zhí)行策略.對(duì)普適定律而言,他對(duì)所有系統(tǒng)中的對(duì)象起作用.而一些法律,比如未成年人法就只對(duì)未成年人起作用,一些規(guī)定比如車(chē)輛經(jīng)過(guò)收費(fèi)站要收費(fèi),卻對(duì)公車(chē)無(wú)效.一個(gè)Aspectpointcut就類似這些定律或法律或規(guī)定起作用的條件,它能確定對(duì)象的范圍,對(duì)象的行為,并將一些特權(quán)階級(jí),特權(quán)行為剔除出去.advice就是他們的執(zhí)行了.
        對(duì)AOP的具體語(yǔ)法,我不想涉及,大家很容易找到資料.我希望的是能有很多的人談?wù)勛约簩?duì)AOP的認(rèn)識(shí),我的觀點(diǎn)也許也很片面,希望通過(guò)討論更加的完善.

    posted on 2005-08-10 13:59 pesome 閱讀(2232) 評(píng)論(10)  編輯  收藏 所屬分類: AOP

    評(píng)論

    # re: AOP之我見(jiàn) 2005-08-12 01:12 I love java!

    哈哈,有意思  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2005-08-12 12:30 haozidong

    雖然說(shuō)得有些多,但很正確的,吼吼  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2005-09-05 23:02 airlink

    糾正一下。。 赫赫,萬(wàn)有引力不是被觸發(fā)的,它總是在那兒的。。。  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2005-09-06 09:16 pesome

    呵呵,謝謝閱讀。萬(wàn)有引力的確總在這兒,但如果在平地上,重力和地面的彈力抵消,可以看作不起作用。而在空中就只有重力其作用,所以可以看作觸發(fā)了,呵呵!  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2005-10-03 16:02 greenwater

    呵呵,再接再厲!  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2005-10-19 22:02 joovle

    不錯(cuò)阿,支持原創(chuàng)。  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2006-01-30 20:11 ihybily

    有意思 我也剛剛開(kāi)始看AOP 加油加油
      回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2006-04-15 12:13 一木

    恩,說(shuō)的很有趣!  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2006-12-14 11:49 hellostone

    很好很好。我不懂AOP的,如果你說(shuō)的事正確的。那真是有意思啊。謝謝啦  回復(fù)  更多評(píng)論   

    # re: AOP之我見(jiàn) 2007-02-28 11:13 acer2006@hotmail.com

    有好多人說(shuō)OOP跟AOP一點(diǎn)關(guān)系都沒(méi)有,而你卻說(shuō)關(guān)系很大,可能個(gè)人站的立場(chǎng)不同.
    我認(rèn)為了面向?qū)ο驩OP是個(gè)通過(guò)繼承的多條豎線的話,那么AOP其實(shí)就是一條橫穿這些豎線的一條直線,或者說(shuō)條直線有交叉的,也有不交叉的.隨便說(shuō)著玩的,呵呵!  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
    相關(guān)文章:
     
    <2005年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    主要記錄作者在學(xué)習(xí)java中的每一步足跡。除非特別說(shuō)明,所有文章均為本blog作者原創(chuàng),如需轉(zhuǎn)載請(qǐng)注明出處和原作者,如用于商業(yè)目的,需跟作者本人聯(lián)系。
    歡迎大家訪問(wèn):

    常用鏈接

    留言簿(16)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    收藏夾

    java技術(shù)

    人間百態(tài)

    朋友們的blog

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 日韩免费电影网址| 亚洲色大成网站www久久九 | 免费看内射乌克兰女| 亚洲人成网亚洲欧洲无码| 99亚偷拍自图区亚洲| 亚洲AV无码成人专区| 亚洲国产片在线观看| 亚洲国产午夜精品理论片| 亚洲人成电影青青在线播放| 亚洲白色白色永久观看| 亚洲国产夜色在线观看| 亚洲va乱码一区二区三区| 亚洲精品伊人久久久久| 亚洲人成网站在线在线观看 | 亚洲线精品一区二区三区 | 全免费a级毛片免费看无码| 成年女人午夜毛片免费看| 日韩免费无码一区二区视频| 日本高清免费不卡视频| 四虎永久免费地址在线网站| 亚洲人成影院在线无码观看| 亚洲最大av无码网址| 亚洲精品国产品国语在线| 久久亚洲精品人成综合网| 亚洲午夜在线一区| 亚洲人成电影网站免费| 麻豆91免费视频| 中文字幕av免费专区| 久久国产精品成人片免费| 在线观看免费人成视频色| 国产嫩草影院精品免费网址| 国产亚洲精品资在线| 亚洲国产精品不卡在线电影| 久久综合久久综合亚洲| 一级毛片无遮挡免费全部| 特级精品毛片免费观看| 日本XXX黄区免费看| 亚洲?V无码成人精品区日韩| 久久亚洲免费视频| 亚洲日本中文字幕天天更新| 中文字幕在线观看免费|