• java代理模式


    代理模式

      英文:Proxy Pattern,23种java常用设计模式之一

    定义:对其他对象提供一种代理以控制对这个对象的访问。

    主要作用:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用

    思想:为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。、

    应用举例:

    假设有一个接口,IRun(),里面有一个空的run()  (跑),所以有Animal都实现(implements)这个方法。但是有的animal比较高级,在跑的时候还可以sing() (唱歌),我们不能直接修改IRun()接口,也不能在Animal的通用方法中单独添加这个方法(因为用到这个新增方法的毕竟是少数)。这样就需要一个代理类RunProxy来为会sing()的特殊animal添加一个单独的sing(),最后在客户端调用代理类。代码如下:

    接口类 IRun:

    public interface IRun {
        public void run(String animal_name);
    }

    实现类Animal:

    public class Animal implements IRun{
        @Override
        public void run(String animal_name) {
            System.out.println("现在是" + animal_name + "在跑!");
        }
    }

     代理类 RunProxy:

    public class RunProxy implements IRun{
        IRun irun;
        public RunProxy(IRun irun) {
            this.irun = irun;
        }
        
        @Override
        public void run(String animal_name) {
            irun.run(animal_name);
        }
        
        public void run(String animal_name, String singname) {
            irun.run(animal_name);
            sing(singname);
            
        }
    
        private void sing(String singname) {
            System.out.println("在唱:" + singname);
        }
    }


     客户端:

    public class TestProxy {
    
        public static void main(String[] args) {
            // 不需要执行额外方法的
            System.out.println("*****不需要执行额外方法的****");
            IRun animal1 = new Animal();
            animal1.run("猪");
    
            // 需要执行额外方法的
            System.out.println("*****需要执行额外方法的****");
            RunProxy run = new RunProxy(animal1);
            run.run("猪", "猪很肥呀猪很肥~~");
        }
    
    }
  • 相关阅读:
    centos 7.0.1406 临时环境jenkins安装
    jenkins 登录提示无效
    ubuntu 16.04 安装完QQ后,更新或apt-get报错
    Web服务网站故障分析常用的命令
    在CentOS7中给docker加权限
    aliyun阿里云Maven仓库地址和其他地址
    python 安装 docker-copmose
    mysql 1055错误
    linux 添加用户
    firewall 开启服务
  • 原文地址:https://www.cnblogs.com/goldeneast/p/3413822.html
Copyright © 2020-2023  润新知