美文网首页
代理模式

代理模式

作者: 狐尼克朱迪 | 来源:发表于2016-10-22 21:08 被阅读0次

定义

为另一个对象提供一个替身或占位符以控制对这个对象的访问

使用场景

  • 远程代理为不同地址空间中的对象提供本地代表
  • 虚拟代理根据需要创建昂贵的对象
  • 保护代理控制对原始对象的访问。 当对象应具有不同的访问权限时,保护代理很有用。

典型使用场景

  • 控制对另一个对象的访问
  • 延迟初始化
  • 实现日志记录
  • 方便网络连接
  • 计数对象的引用

例子

那屋可以进入男巫塔,通过代理可以限制进入塔的人数。
男巫对象:

public class Wizard {
  private String name;

  public Wizard(String name) {
    this.name = name;
  }

  public String toString() {
    return name;
  }
}

男巫塔:

public class WizardTower {
  public void enter(Wizard wizard) {
    System.out.println(wizard + " enters the tower.");
  }
}

男巫塔的代理:

public class WizardTowerProxy extends WizardTower {
  private static final int NUM_WIZARDS_ALLOWED = 3;
  private int numWizards;

  @Override
  public void enter(Wizard wizard) {
    if (numWizards < NUM_WIZARDS_ALLOWED) {
      super.enter(wizard);
      numWizards++;
    } else {
      System.out.println(wizard + " is not allowed to enter!");
    }
  }
}

进入塔:

public class App {
  public static void main(String[] args) {
    WizardTowerProxy tower = new WizardTowerProxy();
    tower.enter(new Wizard("Red wizard"));
    tower.enter(new Wizard("White wizard"));
    tower.enter(new Wizard("Black wizard"));
    tower.enter(new Wizard("Green wizard"));
    tower.enter(new Wizard("Brown wizard"));
  }
}

分析

代理模式也可以参考图片预加载:第七章 迭代器模式

参考

iluwatar/java-design-patterns

相关文章

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

  • 设计模式

    单例模式 代理模式 静态代理 jdk动态代理 cglib动态代理 工厂模式 适配器模式 建造者模式 观察者模式

  • kube-proxy的3种模式

    userspace代理模式 iptables代理模式 IPVS代理模式 https://kubernetes.io...

  • 第4章 结构型模式-代理模式

    一、代理模式简介 二、代理模式3个角色 三、代理模式的优点 四、代理模式的实例(游戏代练)

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

  • 结构型 代理模式(文末有项目连接)

    1:什么是代理模式 2:没用代理模式时的实例 3:使用代理模式将其解耦(静态代理) 3:使用代理模式将其解耦(动态...

  • 设计模式-动态代理模式

    之前介绍了代理模式,大家也都了解了代理模式,不过之前介绍的代理模式是静态代理,静态代理什么意思?静态代理指的是代理...

  • 代理模式

    一、什么是代理模式 代理模式(Proxy pattern):代理模式又叫委托模式,是为某个对象提供一个代理对象,并...

  • 设计模式之代理模式(Proxy模式)

    代理模式的引入 代理模式的实例程序 代理模式的分析 代理模式的引入 Proxy是代理人的意思,指的是代替别人进行工...

  • Java设计模式之代理模式

    Java设计模式之代理模式 代理模式 静态代理 动态代理 为什么需要代理 通过代理,我们能够不用知道委托人是谁,而...

网友评论

      本文标题:代理模式

      本文链接:https://www.haomeiwen.com/subject/nouhuttx.html