AOP,面向切面編程,在看傳智視頻的時候,看到一個很好的理解,一個很好的AOP的例子,試詳解之。
最優例子:權限控制。
在權限控制中,比較原始的做法(不原始的做法我也不會)是,對每個需要控制權限的地方,通過if來判斷人員的權限,而後給予或不給某權限。如:
而這個過程中,對每一個按鈕、頁面或者其他元素,一旦需要授權,則需要進行一番這樣的判斷,這個判斷的過程明顯的是代碼重復。因此有必要將if判斷分離出來,我們只有專心的做好 do xxx 的部分就好了。
把 if判斷分離出來的過程,就是一種AOP的體現。
java對AOP的抽取,采用了代理(proxy)的方法來進行。簡單的說,就是設置一個代理對象,對所有的業務方法進行攔截,而後判斷用戶是否有權限訪問,有權限的話就允許執行業務方法,否則就不允許執行業務方法。
也即:將目標對象的所有業務實現方法都賦予代理對象,這樣,只需要給代理對象做操作即可,而不用在目標對象身上進行冗余的代碼。