春シリーズ__04AOP

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は、動的プロキシによって達成されます。
荷造りプロキシオブジェクトを使用して、プロキシオブジェクトと元のオブジェクトを置き換え..:ここでは簡単に動的なエージェントを説明 元のオブジェクトに対するすべての呼び出しは、プロキシ経由でなければならないプロキシオブジェクトは、元のオブジェクトのメソッドを呼び出すかどうか、いつ決めます。その呼び出し手順を以下に示します。

おすすめ

転載: www.cnblogs.com/JackHou/p/11530932.html