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

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

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

    AOP,IOC,Spring

    Posted on 2005-06-01 14:11 李嵐 閱讀(815) 評論(0)  編輯  收藏 所屬分類: Java

    理解AOP

    我覺得面向對象很好地解決了軟件系統中職責劃分的問題.借助于面向對象,軟件開發人員一般的,都可以將需求里的名詞轉換成系統中的對象,動詞轉換為對象里的方法.這樣非常符合人的思維方式,非常自然.


    但是,問題是某些需求卻偏偏不是能用這樣的”名詞”和”動詞”就能完美的描述出來的,假如這樣的問題:需要對系統中的某些方法進行事務處理,這種需要事務代碼散布在多個類中.面對這種需求,應該怎么辦呢?最直接的辦法就是:創建一個基類(接口)或者一個助手,將事務處理的功能放在其中,并讓所有需要事務功能的類繼承這個基類(接口)或者使用這個助手.加入這樣的.需要修改的地方就會分散在多個文件中.這樣大的修改量,無疑會增加出錯的幾率,并且加大系統維護的難度,如圖:

                                          1.jpg




    因此,面向方面的編程(
    Aspect Oriented Programming,AOP)應運而生.AOP為開發者提供了一種描述橫切關注點的機制,并能夠自動將橫切關注點織入到面向對象的軟件系統中,從而實現了橫切關注點的模塊化.通過劃分Aspect代碼,橫切關注點變得容易處理.開發者可以在編譯時更改,插入或除去系統的Aspect,甚至重用系統的Aspect.” OOP只用于表示對象之間的泛化-特化(generalization-specialization)關系(通過繼承來表現),而對象之間的橫向關聯則完全用AOP來表現. 這樣,很多給對象之間橫向關聯增加靈活性的設計模式(例如Decorator)將不再必要.”,如圖:
                                           2.jpg

    Spring中的Ioc

    想一想以前在使用工廠模式的時候,在最早的情況下,每個工廠可能都是一個Singleton,生成對象的代碼被寫死在了類里面.后來人們覺這樣還是耦合程度太高,還不夠靈活.所以把對象的類名寫在一個XML文件里,這樣一來.問題又來了,每個工廠都有自己的讀取配置文件的代碼,通過讀取XML文件,或者通過讀取Properties,工廠里充滿了亂糟糟的和業務邏輯完全不相關的配置管理代碼,維護起來很不方便,.而Spring通過組件工廠把這些都集成在了一起,用一個統一的BeanFactory來管理這些配置,而且提供了更高一級的抽象:ApplicationContext

     

    Ioc好像很神奇的樣子,其實原理和實現都很簡單,就是將要使用的對象都用XML來定義,用反射來生成,用注射的方式來使用. 其實Ioc是工廠模式的升華,Ioc可以被看作是一個大工廠,只不過這個大工廠里要生成的對象都是在XML文件中給出定義的,然后利用Java“反射”編程,根據XML中給出的類名生成相應的對象。從實現來看,Ioc是把以前在工廠方法里寫死的對象生成代碼,改變為由XML文件來定義,也就是把工廠和對象生成這兩者獨立分隔開來,目的就是提高靈活性和可維護性。

    Template Method和回調在框架中的使用

    Template模式主要是用來解決這樣的一個問題:當你知道算法的具體步驟,但不知道如何去執行這些步驟.Template把如何執行這些步驟的方法都封裝成抽象的函數,并且提供一個正確的順序去執行這些步驟,而具體子類實現這些處理各個步驟的抽象方法.

     

    業務邏輯抽象到超類集中化就是所謂的”控制反轉”了.在傳統的類庫中,一般是由客戶端來調用類庫里的方法.而在這里,卻是框架控制了用戶流程,具體的子類只是要求履行一個明確的契約.在Spring中的MVC框架里,jdbc包里.都大量的使用了Template模式.

     

    Java中的回調函數主要是在實現事件驅動模型的時候使用的,但是在Spring里面,回調被賦予了新的意義:通過回調接口(函數)來實現可擴展性.如jdbc包的RowcallbackHandler.


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    posts - 7, comments - 23, trackbacks - 0, articles - 0

    Copyright © 李嵐

    主站蜘蛛池模板: 亚洲精品成人区在线观看| 国产免费怕怕免费视频观看| 亚洲日本一区二区三区在线不卡| 亚洲欧美日韩综合久久久| 成年女人18级毛片毛片免费观看| 亚洲电影在线播放| 1000部羞羞禁止免费观看视频 | 日本亚洲免费无线码| 成视频年人黄网站免费视频| 亚洲第一成年人网站| 日韩亚洲国产高清免费视频| 亚洲国产福利精品一区二区| 99久久综合国产精品免费| 亚洲欧美第一成人网站7777 | 永久免费av无码不卡在线观看| 91亚洲性爱在线视频| 成年轻人网站色免费看| 国产亚洲精品美女2020久久 | gogo全球高清大胆亚洲| caoporn成人免费公开| 久久亚洲精品无码| 国产h肉在线视频免费观看| 亚洲综合一区二区三区四区五区| 天天干在线免费视频| 免费观看四虎精品成人| 亚洲精品中文字幕乱码三区| 久久久精品2019免费观看| 亚洲三级高清免费| 亚洲精品国产精品国自产观看| 中国在线观看免费的www| 亚洲欧洲国产精品久久| 国产小视频免费观看| 99热在线日韩精品免费| 亚洲国产综合在线| 一区国严二区亚洲三区| 久久午夜夜伦鲁鲁片无码免费| 亚洲 日韩 色 图网站| 亚洲一区日韩高清中文字幕亚洲 | 亚洲av日韩av无码| 日本人护士免费xxxx视频| a级成人毛片免费视频高清|