zoukankan      html  css  js  c++  java
  • java设计模式之代理模式

    最近在重新学习java,学到了java的设计模式的代理模式.

    代理模式分为静态代理和动态代理

    下面是我的学习心得:

    静态代理:实现了一遍静态代理后,总的来说就是,代理类和被代理类实现了同一个接口,属于相同的类型,拥有相同的方法,代理类持有被代理类的引用,在代理类的方法里调用被代理类的方法就是静态代理的原理.

    代码展示

    public interface ZuFang {
        
        public void zf();
    
    }
    public class PeopleZF implements ZuFang {
    
        @Override
        public void zf() {
            System.out.println("租房子");
        }
    
    }
    public class ZFProxy implements ZuFang {
    
        private ZuFang zfz;
    
        public ZFProxy() {
            super();
            this.zfz = new PeopleZF();
        }
    
        @Override
        public void zf() {
            before();
            zfz.zf();
            atfer();
        }
    
        private void before() {
            System.out.println("开始租房");
    
        }
    
        private void atfer() {
            System.out.println("租房结束");
        }
    
        
    
    }
    public class RopxyFactory {
        
        public static ZuFang getZuFang(){
            return new ZFProxy();
        }
    
    }
    public class Test001 {
        @Test
        public void test1() {    
            ZuFang zuFang = RopxyFactory.getZuFang();
            zuFang.zf();
        }
    
        /**
         * 静态代理: 代理类和被代理类都实现头一个接口,这样 两个类都有头一个方法. 在代理类中加入被代理类的对象. 代用代理类的方法中调用被代理类的方法.
         * 这样就到达了调用被代理类的方法,同事调用代理类的效果,而且可以在被代理类的方法调用前后加入一些其他的方法.
         * 
         */
    }

    动态代理

    分析:动态代理要实现

  • 相关阅读:
    没有可用软件包 libgdiplus 解决方法
    aspnetcore2.1 部署到docker (访问出现404)
    pagination.js 使用
    System.DllNotFoundException: Unable to load DLL 'libgdiplus': The specified module could not be found.
    aspnetcore 日志 serilog-aspnetcore
    supervisor 安装配置
    HttpClient 上传图片
    C#如何调用C++(进阶篇)
    netcore使用EFcore(第一个实例)
    .NET-高并发及限流方案
  • 原文地址:https://www.cnblogs.com/songfahzun/p/4921146.html
Copyright © 2011-2022 走看看