设计模式-代理模式Proxy(结构型)

作者 : admin 本文共869个字,预计阅读时间需要3分钟 发布时间: 2024-06-16 共1人阅读

代理模式(Proxy)

代理模式是一种结构型模式,它可以通过一个类代理另一个类的功能。代理类持有被代理类的引用地址,负责将请求转发给代理类,并且可以在转发前后做一些处理

图解

设计模式-代理模式Proxy(结构型)插图

角色

  1. 抽象主题(Subject): 定义代理对象和被代理对象的接口
  2. 真实主题(Real Subject):即被代理对象,实现抽象主题的接口。
  3. 代理(Proxy):实现抽象主题接口,持有代理对象的引用,在调用真实主题对象的方法时,可以在调用前后做一些处理
  4. 客户端:使用抽象主题接口来操作真实主题或代理主题,不需要知道具体是哪一个实现类

代码实现

抽象主题

public interface Pay {
    public void play();
}

真实主题:

public class PayService implements Pay{
    @Override
    public void play() {
        System.out.println("支付成功!");
    }
}

代理

public class ProxyPayService implements Pay{
    private Pay pay;
    public ProxyPayService(Pay pay) {
        this.pay = pay;
    }
    @Override
    public void play() {
        System.out.println("支付前,查询余额");
        pay.play();
        System.out.println("支付后,积分操作");
    }
}

客户端:

public class Test {
    public static void main(String[] args) {
        PayService payService = new PayService();
        ProxyPayService proxyPayService = new ProxyPayService(payService);
        proxyPayService.play();
    }
}

总结

可以发现代理类只能代理实现Pay接口的类,不够灵活。开发过程中,经常会有日志、事务等的操作是不区分业务逻辑的,可以使用动态代理。

代理模式和装饰模式非常相似,只是在语义上不一样

动态代理

java中的动态代理

本站无任何商业行为
个人在线分享 » 设计模式-代理模式Proxy(结构型)
E-->