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

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

前言:

代理模式,aop环绕通知,动态代理,静态代理 都是代理的一种,这次主要是记录设计模式的代理demo案例,详情请看其他笔记。

1)意图

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

2)结构

3)适用性

Poxy模式适用于在需要比较通用和复杂的对象指针代替简单的指针的时候,常见情况有:

  • 远程代理(Remote Proxy)为一个对象在不同地址空间提供局部代表。
  • 虚代理(Virtual Proxy)根据需要创建开销很大的对象。
  • 保护代理(Protection Proxy)控制对原始对象的访问,用于对象应该有不同的访问权
    限的时候。
  • 智能引用(Smart Reference)取代了简单的指针,它在访问对象时执行一些附加操作。

代码:

c 复制代码
/**
 * @author psd 结构性设计模式之代理模式
 */
public class ProxyDemo {
    public static void main(String[] args) {
        RealSubject realSubject = new RealSubject();
        Proxy proxy = new Proxy(realSubject);
        proxy.request();
    }
}

interface Subject{
    void request();
}

class Proxy implements Subject{
    protected RealSubject realSubject;
    public Proxy(RealSubject realSubject){
        this.realSubject = realSubject;
    }
    @Override
    public void request() {
        System.out.println("我是中介帮您看房.....");
        realSubject.request();
        System.out.println("我是中介看好房后对接租方和被出租方.....");
    }
}

class RealSubject implements Subject{
    @Override
    public void request() {
        System.out.println("我是客户要租房。。。。。");
    }
}
相关推荐
山沐与山31 分钟前
【设计模式】Python策略模式:从入门到实战
python·设计模式·策略模式
阿拉斯攀登34 分钟前
设计模式:责任链模式(mybatis数据权限实现)
设计模式·mybatis·责任链模式
syt_101335 分钟前
设计模式之-模板模式
设计模式
阿拉斯攀登37 分钟前
设计模式:责任链模式(MyBatis)
设计模式·mybatis·责任链模式
崎岖Qiu2 小时前
【设计模式笔记19】:建造者模式
java·笔记·设计模式·建造者模式
syt_10132 小时前
设计模式之-享元模式
javascript·设计模式·享元模式
想学后端的前端工程师17 小时前
【Java设计模式实战应用指南:23种设计模式详解】
java·开发语言·设计模式
Revol_C17 小时前
开箱即用!轻量级轮询方案,支持同步获取轮询结果!
前端·javascript·设计模式
聪明努力的积极向上20 小时前
【设计】分批查询数据通用方法(基于接口 + 泛型 + 定点复制)
开发语言·设计模式·c#
long31621 小时前
类与对象 | 低级别设计 (LLD)
java·spring boot·学习·程序人生·spring·设计模式·学习方法