1. 程式人生 > >關於Java 實現抽象類的抽象方法的特性的利用---面向切面

關於Java 實現抽象類的抽象方法的特性的利用---面向切面

light 統計 其實在 mybatis print point pointcut myba pan

今天看工作看代碼突然有了以下設想:

/**
 * Created by zq on 2017/5/25.
 * 抽象類
 */
public abstract  class AbstractC {
    public void C(){
        D();
        System.out.println("C_1");
        E();
    }


    public abstract  void D();
//    {
//        System.out.println("C_1");
//    }

    public abstract void E();
//    {
//        System.out.println("C_2");
//    }


}

  

關鍵點事陰影部分的方法c();

如下代碼利用抽象類的抽象方法的實現包裝的思想:

/**
 * Created by zq on 2017/5/25.
* 利用抽象類的抽象方法實現包裝的思想 */ public class AbstractWay { public static void main(String [] args){ new AbstractC() { @Override public void D() { System.out.println("C_2"); } @Override public void E() { System.out.println("C_3"); } }.C()
; } }

  如上,其實在諸如spring,mybatis框架中,都有這種包裝的思想,在spring中,這種思想被定義為aop(面向切面編程),比如spring註解的實現(如:@[email protected]),將代碼中System.out.println("C_1"); 替換成“反射”的相關方法,即可達到在執行某方法前後,執行預先設定的業務邏輯,比如訪問統計,日誌記錄等.

關於Java 實現抽象類的抽象方法的特性的利用---面向切面