zoukankan      html  css  js  c++  java
  • 设计模式 | 代理模式(proxy)

    定义:

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

    结构:(书中图,侵删)

    一个定义公共方法的接口
    一个真实实体
    一个含有真实实体引用的代理类

    实例:

    我思考了一下,咱们的科学上网就是一种代理
    如上图,假如要访问油管,我们需要先将请求发给代理服务器,由代理服务器帮我们访问目标网站。
    但是一般这种目标网站是不知道真正访问的人——也就是我的存在的。
     
    用代码来表示:
    公共接口,都有访问的方法
    package designpattern.proxy;
    
    public interface Visit {
        void visit(String address);
    }

    真实类(自己的电脑):

    package designpattern.proxy;
    
    public class PC implements Visit {
    
        @Override
        public void visit(String address) {
            System.out.println("访问" + address);
        }
    
    }

    代理类(代理服务器):

    package designpattern.proxy;
    
    public class Proxy implements Visit {
        PC pc;
    
        public Proxy(PC pc) {
            this.pc = pc;
        }
    
        @Override
        public void visit(String address) {
            pc.visit(address);
        }
    
    }

    客户端:

    package designpattern.proxy;
    
    public class Client {
        public static void main(String[] args) {
            Proxy proxy = new Proxy(new PC());
            proxy.visit("youtube.com");
        }
    }
    结果输出:
    访问youtube.com

    总结:

    这个设计模式相对来说比较简单,就相当于授权给别人,让别人帮我干事;
    有点像古代尚方宝剑的感觉,见到此剑,如朕亲临。(一不小心中二了起来)
    生活中也很常见,所以理解起来比较容易。
  • 相关阅读:
    用Java socket (TCP通信模型)实现一个简单的web 服务器
    java.net.BindException: 权限不够
    java 反射机制探究
    java程序执行顺序
    python 安装第三方库,超时报错--Read timed out.
    RTTI和反射
    Ubuntu 16.04
    20160515-hibernate--事务
    Ubuntu 16.04
    python--继承和多态
  • 原文地址:https://www.cnblogs.com/imoqian/p/10678850.html
Copyright © 2011-2022 走看看