AOPについて
今日はAOPを紹介します。AOPは、中国の設計方法は、多くの場合、OOPの拡張として、アイデアは、それが良いです春に加えて適用されている、「アスペクト指向プログラミング」と訳されています。ロギング、データ検証など:通常、ソフトウェアシステムは、通常のビジネス・ロジック・コードに加えて、などのコードの機能のうちのいくつかは、しばしばあります。メンテナンス性が大幅に削減されます、コードの可読性、最も原始的な方法は、ビジネス・ロジック・コードに直接機能コードを書くことですが、これはより便利な時間の開発に加えていました。あなたが頻繁に(ロギングなど)時間の関数を使用する必要があるときに、あなたはまた、書き込みを繰り返す必要があります。AOPを使用することの利点は、簡単に言えば、それは、ソースコードを変更せずに強化された性的機能を提供し、動的なエージェント技術により、必要なときに、引き出された反復コードとして機能することができるということです。
利点:
- コードの重複を減らします
- 開発効率を向上させます
- コードよりクリーンで保守性を向上させるには
そんなに言わ、単にあなたを示し、私たちは電卓のオブジェクトがあると仮定して、基本的な算術演算を実現するために、同時に、我々は適切な伐採事業ことを願っています。
public interface ArithmeticCalculator {
int add(int i, int j);
int sub(int i, int j);
int mul(int i, int j);
int div(int i, int j);
}
ここでは、加算と減算、乗算、除算を完了するために、インタフェースArithmeticCalculatorを定義し、その実装を完了するために、その実装クラスを委託します。
public class ArithmeticCalculatorImpl implements ArithmeticCalculator {
@Override
public int add(int i, int j) {
System.out.println(i + "和 " + j + "开始加法运算");
int reusult = i + j;
System.out.println("加法运算结果是: " + reusult);
return reusult;
}
@Override
public int sub(int i, int j) {
System.out.println(i + "和 " + j + "开始减法运算");
int reusult = i - j;
System.out.println("减法运算结果是: " + reusult);
return reusult;
}
@Override
public int mul(int i, int j) {
System.out.println(i + "和 " + j + "开始乘法运算");
int reusult = i * j;
System.out.println("乘法运算结果是: " + reusult);
return reusult;
}
@Override
public int div(int i, int j) {
if (j == 0) {
throw new ArithmeticException("除数" + j + "不能为0");
}
System.out.println(i + "和 " + j + "开始除法运算");
int reusult = i / j;
System.out.println("除法运算结果是: " + reusult);
return reusult;
}
}
繰り返しの多くのコードをロギングしていますが、変更されたとき、あなたは便利な見つけることはありません。ここでは、我々は非常に病気のコードを参照してください。私たちは、このコードの書き換えに従います。
AOPの実装
AOPは、動的プロキシによって達成されます。
荷造りプロキシオブジェクトを使用して、プロキシオブジェクトと元のオブジェクトを置き換え..:ここでは簡単に動的なエージェントを説明 元のオブジェクトに対するすべての呼び出しは、プロキシ経由でなければならないプロキシオブジェクトは、元のオブジェクトのメソッドを呼び出すかどうか、いつ決めます。その呼び出し手順を以下に示します。