面向對象的編程(OOP)中經常使用的概念是:繼承、封裝、多態。在面向方面的編程(AOP)中常使用的概念是:
advices/interceptors, introductions, metadata, and pointcuts。
AOP 面向方面編程的介紹:
面向方面的編程思路很簡單。從面向過程、函數的編程到面向對象的編程到面向接口的編程到面向組件、模塊編程的發展歷史咱們能夠知道,編程方法學的演進是一步一步的擴大了編程考慮的「邊界」。到目前爲止咱們的編程世界裏的宇宙邊界是「類、接口,或者組件」,在這個邊界裏,咱們認爲,一個類實現一個接口,那就不能動態的實現另外一個接口,已有類的行爲在編譯之前就基本固定,要麼是類內部定義的方法,要麼是要麼是繼承和實現接口繼承過來的方法。可是實際的編程工做中咱們碰到了「跨邊界的狀況」,須要多個類,接口,組件合做才能完成的工做,好比:多線程併發訪問,程序流集中控制,序列化和程序狀態保持,以及須要多個「類、接口、組件邊界」共同參於才能完成的工做。爲了更好的處理多個邊界共同完成同一方面的工做,面向方面的編程出現了。這裏的方面,咱們能夠指:爲完成同一任務而須要多個類、接口、組件一塊兒協做工做的綜合。你能夠認爲方面其實就是一個更大的類,這個類主要由咱們OOP中的類、接口組成,固然這些類和接口是如此的親密,以致於他們行爲(方法)能夠相互轉換。其實這沒什麼大不了的,接口的出現不是實現了動態的改變類的行爲的嗎?面向方面的編程只是作了一個延伸,把這個改變提高到了接口這個層次上。
面向方面編程 (AOP) 提供從另外一個角度來考慮程序結構以完善面向對象編程(OOP)。 面向對象將應
用程序分解成 各個層次的對象,而AOP將程序分解成各個方面 或者說 關注點 。這使得能夠模塊化諸如事務管理等這些橫切多個對象的關注點。(這些關注點術語稱做 橫切關注點。)Spring的一個關鍵組件就是AOP框架。