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

  • 相关阅读:
    .net core之log4net和过滤器
    记录待掌握的.net组件或框架或技术
    Spring 注释 @Autowired 和@Resource
    Java——Cookie与Session
    Hadoop
    分布式系统!
    mybatis 学习!
    Java动态代理一Proxy
    JavaWeb学习--Servlet认识
    Angular.JS
  • 原文地址:https://www.cnblogs.com/zqsky/p/6906337.html
Copyright © 2011-2022 走看看