最近跳槽了,新公司使用了 AOP 相關(guān)的技術(shù),于是查點(diǎn)資料,復(fù)習(xí)一下。之前,多少知道點(diǎn),但沒怎么在實(shí)際項(xiàng)目中使用過~
下載 demo 實(shí)例package com.cap.aop;
public interface ICalculator { public double add(double num1, double num2) throws Exception;
public double sub(double num1, double num2) throws Exception;
public double div(double num1, double num2) throws Exception;
public double mul(double num1, double num2) throws Exception;
}
package com.cap.aop;
/**
* 加減乘除
* */
public class Calculator implements ICalculator { @Override
public double add(double num1, double num2) { double result = num1 + num2;
return result;
}
@Override
public double sub(double num1, double num2) { double result = num1 - num2;
return result;
}
@Override
public double div(double num1, double num2) { double result = num1 / num2;
return result;
}
@Override
public double mul(double num1, double num2) { double result = num1 * num2;
return result;
}
}
定義 ICalculator 接口和 Calculator 類,并且 Calculator 也繼承 ICalculator。
若要為這個類添加“日志”功能該如何做?日志在實(shí)際項(xiàng)目中很有必要,比如數(shù)據(jù)庫日志,業(yè)務(wù)日志等等,通過日志就能知道數(shù)據(jù)庫和業(yè)務(wù)存在的問題,這要比調(diào)試程序容易多了,此外還有性能統(tǒng)計(jì),安全控制,事務(wù)處理,異常處理等等都是類似問題。
我們最可能想到的是,在類的每個方法內(nèi)都寫日志相關(guān)的代碼,或是在該類的基類中寫,在其子類中繼承。
原始方法package com.cap.aop;
/**
* 加減乘除,原始方式
* */
public class CalculatorOriginalWay implements ICalculator { @Override
public double add(double num1, double num2) { System.out.println("the method [add()]" + "begin with args (" + num1 + "," + num2 + ")");
double result = num1 + num2;
System.out.println("the method [add()]" + "end with result (" + result + ")");
return result;
}
@Override
public double sub(double num1, double num2) { System.out.println("the method [sub()]" + "begin with args (" + num1 + "," + num2 + ")");
double result = num1 - num2;
System.out.println("the method [sub()]" + "end with result (" + result + ")");
return result;
}
新聞熱點(diǎn)
疑難解答
圖片精選