美文网首页
Proxy Pattern(代理模式)

Proxy Pattern(代理模式)

作者: 一个追寻者的故事 | 来源:发表于2020-04-25 15:06 被阅读0次

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

    定义

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

    使用场景

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

    代理模式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(代理模式)

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