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");  替换成“反射”的相关方法,即可达到在执行某方法前后,执行预先设定的业务逻辑,比如访问统计,日志记录等.

  • 相关阅读:
    MySQL主从数据库同步延迟问题解决(转)
    Python2.6升级Python2.7
    Socket网络编程
    Python 面向对象进阶
    Python类基础知识(面向对象基础)
    shell脚本中出现^M
    Centos6下Python3的编译安装
    Python成长之路(常用模块学习)
    SVN使用总结
    xshell锁屏
  • 原文地址:https://www.cnblogs.com/zqsky/p/6906337.html
Copyright © 2011-2022 走看看