Proxy Pattern(代理模式)

代理模式 也称为 委托模式。 其实代理在我们日常生活中并不少见,对于程序员来说最常接触的莫过于代理上网。

定义

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

使用场景

无法不想 直接访问某个对象 或 访问某个对象存在困难时 可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象代理对象 需要实现相同的接口。

代理模式UML 类图

代理模式类图

角色介绍:
Subject:抽象主题类。
该类的的主要职责是声明 真实主题 与 代理 的共同接口方法。该类既可以是一个抽象类也可以是一个接口。

RealSubject:真是主题类
该类被称为 委托类 或 被代理类,该类定义了代理所表示的真实对象,由其执行具体的业务逻辑方法,而客户类通过代理类 间接 调用真实主题类中定义的方法。

ProxySubject:代理类。
该类持有一个对真实主题类的引用,在其所实现的接口方法中调用真实主题类中相应的接口方法执行,以此起到代理的作用。

Client:客户类,负责使用代理。

代码实现

public interface Subject {
    abstract void visit();
}
public class RealSubject  implements Subject {
    @Override
    public void visit() {
        System.out.println("---真实委托方法---");
    }
}
public class ProxySubject implements Subject {
    Subject realSubject;
    public ProxySubject(Subject subject){
        this.realSubject = subject;
    }

    @Override
    public void visit() {
        System.out.println("--执行真实委托方法之前--");
        realSubject.visit();
        System.out.println("--执行真实委托方法之后--");
    }
}
public class Client {

    public static void main(String[] args){
        Subject real = new RealSubject();
        Subject proxy = new ProxySubject(real);
        proxy.visit();
    }
}

结果:

--执行真实委托方法之前--
---真实委托方法---
--执行真实委托方法之后--
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式...
    _凌浩雨阅读 3,658评论 0 1
  • 【学习难度:★★★☆☆,使用频率:★★★★☆】直接出处:代理模式梳理和学习:https://github.com/...
    BruceOuyang阅读 5,728评论 0 1
  • 解决问题 一方面保证对象本身的行为聚合,避免非对象行为逻辑杂糅到对象行逻辑之中。另一方面,实现对象行为增强,通过代...
    oneWeekOneTopic阅读 2,454评论 0 0
  • 定义: 其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理...
    Java天天阅读 780评论 0 0
  • 代理模式 定义:为其他对象提供一种代理以控制对这个对象的访问。 场景: 小明喜欢小红,却不敢向小红献殷勤。小明找他...
    辣么大大大大阅读 1,690评论 0 0