• 设计模式----代理模式通俗实例


    代理和被代理实现同一个接口

    package com.ij34.proxy;
    
    public interface ProxyPattern {
      /*
        代理和被代理的共同点就是要实现同一个接口
        */
        public void eat();
        public void  sleep();
    }

    代理者女孩的母亲

    package com.ij34.proxy;
       /*
        代理类
    */
    public class GrilsMother  implements  ProxyPattern{
    
        private ProxyPattern pp;
    
        public  GrilsMother(ProxyPattern pp){
            this.pp=pp;
        }
    
        @Override
        public void eat() {
           pp.eat();
        }
    
        @Override
        public void sleep() {
           pp.sleep();
        }
    }

    被代理者女孩

    package com.ij34.proxy;
     /*
       被代理类
    */
    public class Gril implements ProxyPattern{
         @Override
         public void eat() {
             System.out.println("我是girl,我在eat");
         }
    
         @Override
         public void sleep() {
             System.out.println("我是girl,我在sleep");
         }
     }

    测试

    package com.ij34.proxy;
    
       /*
          测试代理,表面上写女孩女孩母亲吃饭睡觉,实际上写女孩吃饭睡觉
    */
    public class ProxyTest {
        public static void main(String[] args) {
            GrilsMother dm = new GrilsMother(new Gril());
            dm.eat();
            dm.sleep();
        }
    }

    测试结果


    附:

    Spring里代理模式,Spring AOP 利用了 AspectJ AOP实现的! AspectJ AOP 的底层用了动态代理
    动态代理有两种
    目标方法有接口时候自动选用 JDK 动态代理
    目标方法没有接口时候选择 CGLib 动态代理

  • 相关阅读:
    pyinstaller相关用法
    yield 与 yield from
    async /await相关知识理解
    调试程序方法pdb
    任务22-4
    任务22-2
    跳台阶
    计算三维空间某点距离原点的欧式距离
    质数判断
    罗马数字转换
  • 原文地址:https://www.cnblogs.com/tk55/p/9231979.html
Copyright © 2020-2023  润新知