zoukankan      html  css  js  c++  java
  • 关于Java 实现抽象类的抽象方法的特性的利用---面向切面

    今天看工作看代码突然有了以下设想:

    /**
     * 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注解的实现(如:@Pointcut+@Pointcut),将代码中System.out.println("C_1");  替换成“反射”的相关方法,即可达到在执行某方法前后,执行预先设定的业务逻辑,比如访问统计,日志记录等.

  • 相关阅读:
    你可能不知道的 30 个 Python 语言的特点技巧
    正则替换sql为动态sql
    列表按指定个数分割后格式化输出
    多线程队列下载天涯帖子
    多线程下载图片
    sublime text3 运行python配置
    01_什么是接口测试
    02_Fiddler使用
    01_Fiddler安装
    05_功能测试
  • 原文地址:https://www.cnblogs.com/zqsky/p/6906337.html
Copyright © 2011-2022 走看看