1. 程式人生 > >瞭解AOP(面向切面程式設計)與OOP(面向物件程式設計)

瞭解AOP(面向切面程式設計)與OOP(面向物件程式設計)

                 AOP,他是一種思想,是OOP的延展。

1,
說OOP就來說下之前的OPP,最早開始的程式,一個函式(方法)或者說是功能做一個事情,這種思想劃分的是一個功能一個功能的來組合解決問題。
後來人們發現,功能解決問題是解決了,但是功能太多了,人腦實在是有限,太勞財傷命了,而且跟人們看世界的方法有點差異,人們都習慣把某一類的習性劃分一起,作為一個整體研究,而不是把某一個習性放一起,很多個種類的東西都擁有這個習性。
2,
所以就搞了一種OOP來解決問題,這個的好處就是在於把某一類或者說某一種特性的功能組合在一起,賦給抽象的物件,這樣跟你我他這種人們的世界觀很接近,而且不用研究你啊我啊能幹什麼,只要知道大家都是人類,人類會有一些通用的什麼方法類之類的,而你我具體有些什麼嗜好差異,就不管了,這樣一來,就能把人力集合起來,各司其職了。脈絡就清晰了。

3,
再就是AOP,其實這幾個都是人類生產力方式的轉變有關,有一定的相通處。這個就更加細化了,他把抽象中的某些方面做了合集,就好比大公司,如果一個經理管理具體細緻到人,而且管吃喝住行之類的啥都插一腳,他也很累,而且管得也不夠多,但是如果他只管某一個方面的東西,比如大家吃,那樣就可以多管很多人,他也能輕鬆很多,這樣就可以找不同的經理來管不同方面,效率又會更加高,所以AOP就出來了,之前的OOP,很多種類,很多抽象的東西,你要呼叫某個類別的方法,至少要知道他是誰,能幹嘛直接去呼叫,而此時你根本不想知道這些,(比如你要找個洗碗的,你肯定不想了解他能不能吃飯,個子高不高之類的,你只要他能給你幹好活就可以了)因為你只關心你要的方法,其餘的都是多餘的。所以AOP的話,有一個專門的管理者幫你管理你要的方法,一種方面的東西,比如add什麼,這樣是不更省心省力

總結:

所以說, OPP,OOP,AOP,區別就是"字母不同"!是什麼意思,就是什麼區別。

概念:
①:
OOP是面向物件程式設計,核心思想是將客觀存在的不同事物抽象成相互獨立的類,然後把與事物相關的屬性和行為封裝到類裡,並通過繼承和多型來定義類彼此間的關係,最後通過操作類的例項來完成實際業務邏輯的功能需求。

②:
AOP是面向切面程式設計,核心思想是將業務邏輯中與類不相關的通用功能切面式的提取分離出來,讓多個類共享一個行為,一旦這個行為發生改變,不必修改類,而只需要修改這個行為即可。

OOP與AOP的區別:
1、面向目標不同:簡單來說OOP是面向名詞領域,AOP面向動詞領域。

2、思想結構不同:OOP是縱向結構,AOP是橫向結構。

3、注重方面不同:OOP注重業務邏輯單元的劃分,AOP偏重業務處理過程的某個步驟或階段。

OOP與AOP聯絡:
兩者之間是一個相互補充和完善的關係。

AOP的優點:

利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率。

AOP的主要應用:

日誌記錄、事務處理、異常處理、安全控制和效能統計方面。

在Spring中提供了面向切面程式設計的豐富支援,允許通過分離應用的業務邏輯與系統級服務和事務進行內聚性的開發。