zoukankan      html  css  js  c++  java
  • Java静态代理

    当业务需要对某一个类中的某个方法进行扩展又不能改变原函数体的情况下,我们采用静态代理模式:

    1、有一个ComInterface 公共接口

    package cn.ecut.test.utils;
    public interface ComInterface { void sayHi(); }

     

    2、目标对象类 TargetObject 实现 ComInterface 接口

    package cn.ecut.test.utils;
    
    public class TargetObject implements ComInterface{
        @Override
        public void sayHi() {
            System.out.println("-----很高兴见到你!-----");
        }
    }
    

      

    3、代理对象类 ProxyObject 实现 ComInterface 接口

    package cn.ecut.test.utils;
    
    public class ProxyObject implements ComInterface {
        //目标对象
        private TargetObject targetObject;
    
        public ProxyObject(TargetObject targetObject) {
            this.targetObject = targetObject;
        }
    
        /**
         * 通过目标对象TargetObject调用saiHi()方法
         * 这样就避免了去修改函数体,保证了封装性的原则
         */
        @Override
        public void sayHi() {
            System.out.println("-----开始拓展目标对象saiHi()方法-----");
            //调用目标对象中的sayHi()方法
            targetObject.sayHi();
            System.out.println("-----结束拓展目标对象saiHi()方法-----");
        }
    }
    

      

    4、测试类

    package cn.ecut.test.utils;
    
    public class ProxyTest {
        public static void main(String[] args) {
            ProxyObject proxy = new ProxyObject(new TargetObject());
            proxy.sayHi();
        }
    }
    

      

    5、测试结果

    6、总结:静态代理类可以

  • 相关阅读:
    Subversion学习笔记
    单元测试 学习笔记 之五
    单元测试 学习笔记 之四
    将全球通讯簿导入pop3客户端联系人
    isa 2006 sp1发布
    使用POWERSHELL管理OCS 2007
    SCCM 2007 排错
    空空排错日志:OCS错误日志14501等解决办法
    在AD没有备份的情况下还原被删除的数据
    冲击波又回来啦?
  • 原文地址:https://www.cnblogs.com/py1994/p/7085383.html
Copyright © 2011-2022 走看看