设计模式 代理模式轻谈

代理模式简介

别称:委托模式

英文:Proxy Pattern

类型:结构型设计模式

定义:为某个实际对象提供一种代理,通过代理对象可以访问实际对象

使用场景

1、静态代理用于对原有对象的业务逻辑进行补充(需求增加必备)

2、无法访问实际的对象,可通过代理对象间接访问实际对象

实现思路

1、代理类与实际类实现同一个接口

2、代理类的构造方法传入实际对象,每个代理对象负责持有实际对象

3、代理类与实际类为了实现同一个接口,可以继承同一个抽象类

4、代理类与实际类为了实现同一个接口,可以实现同一个interface


代码实现(静态代理)

1、定义代理类与实际类共用的接口类(抽象类、interface均可以),该类也被称为《抽象主题类》

public interface Action {
    public void doSomething();
}

2、定义实际类(也称被委托类、或者被代理类),并实现同一个接口Action

public class RealObject implements Action{
    
    @Override
    public void doSomething() {
        System.out.println("do something");
    }

}

3、定义代理类(也称委托类),并实现同一个接口Action

public class Proxy implements Action {

    private Action realObject;

    public Proxy(Action realObject) {
        this.realObject = realObject;
    }
    
    @Override
    public void doSomething() {
        System.out.println("proxy pre do");
        realObject.doSomething();
        System.out.println("proxy done!!!!");
    }
}

4、运行代码(伪代码)

  RealObject real = new RealObject();
  Proxy proxy = new Proxy(real);
  proxy.doSomething();

首先创建实际类的对象

然后创建代理类对象(需传入真实类对象)

调用代理对象的doSomething()方法

代理模式和装饰器模式的区别

1、代理模式强调的是为实际对象增加一些额外的功能,与实际对象本身应该提供的功能没有关系

2、装饰器模式强调增加的是实际对象自身应该提供的功能,与实际对象有直接的关系

代理模式的高级实现

使用Java的反射技术,动态生成代理类对象…………动态代理专题里再展现吧……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值