第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是面向方面的編程?

什么是面向方面的編程?

溫溫醬 2019-12-07 16:22:03
我了解面向?qū)ο蟮某绦蛟O計,并且已經(jīng)編寫OO程序很長時間了。人們似乎在談論面向方面的編程,但是我從來沒有真正了解過它是什么或如何使用它?;痉妒绞鞘裁矗?
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻1796條經(jīng)驗 獲得超7個贊

AOP解決了橫切關注點的問題,橫切關注點可能是在不同方法中重復的任何類型的代碼,通常無法像日志記錄或驗證那樣被完全重構為自己的模塊。因此,使用AOP,您可以將這些內(nèi)容排除在主要代碼之外,并按如下方式垂直定義:


function mainProgram()

   var x =  foo();

   doSomethingWith(x);

   return x;

}


aspect logging

    before (mainProgram is called):

    { 

       log.Write("entering mainProgram");

    }


    after (mainProgram is called):

    { 

       log.Write(  "exiting mainProgram with return value of "

                  + mainProgram.returnValue);

    }

 } 


aspect verification

    before (doSomethingWith is called):

    { 

       if (doSomethingWith.arguments[0] == null) 

       { 

          throw NullArgumentException();

       }


       if (!doSomethingWith.caller.isAuthenticated)

       { 

          throw Securityexception();

       }

    }

 }

然后使用aspect-weaver將代碼編譯為以下內(nèi)容:


function mainProgram()

   log.Write("entering mainProgram");


   var x = foo();   


   if (x == null) throw NullArgumentException();

   if (!mainProgramIsAuthenticated()) throw Securityexception();

   doSomethingWith(x);   


   log.Write("exiting mainProgram with return value of "+ x);

   return x;


查看完整回答
反對 回復 2019-12-07
?
繁星coding

TA貢獻1797條經(jīng)驗 獲得超4個贊

為了完整性而從副本中復制(愛因斯坦):

經(jīng)典示例是安全性和日志記錄。與其在您的應用程序內(nèi)編寫代碼以記錄x的出現(xiàn)或檢查對象z的安全訪問控制,不如使用普通代碼的“帶外”語言措辭,它可以系統(tǒng)地注入安全性或登錄沒有天真地將其包含在其中的例程這樣一種方式,即使您的代碼不提供它,它也會得到照顧。

一個更具體的示例是操作系統(tǒng)提供對文件的訪問控制。一個軟件程序不需要檢查訪問限制,因為底層系統(tǒng)可以完成該工作。

如果您認為根據(jù)我的經(jīng)驗需要AOP,則實際上確實需要投入更多的時間和精力來進行系統(tǒng)內(nèi)適當?shù)脑獢?shù)據(jù)管理,并著重考慮周全的結(jié)構/系統(tǒng)設計。


查看完整回答
反對 回復 2019-12-07
  • 3 回答
  • 0 關注
  • 524 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號