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

    总结:

    这个设计模式相对来说比较简单,就相当于授权给别人,让别人帮我干事;
    有点像古代尚方宝剑的感觉,见到此剑,如朕亲临。(一不小心中二了起来)
    生活中也很常见,所以理解起来比较容易。
  • 相关阅读:
    tensorflow学习3---mnist
    tensorflow学习2-线性拟合和神经网路拟合
    关于泛型数据结构中OrderBy的使用
    敏捷开发之观察者模式
    敏捷开发之设计文档
    C#算法实现获取树的高度
    武林高手?敏捷开发,唯velocity取胜
    C#接口多继承方法重名问题
    .Net平台技术栈?不止于此
    浅谈C#中Tuple和Func的使用
  • 原文地址:https://www.cnblogs.com/imoqian/p/10678850.html
Copyright © 2011-2022 走看看