结构型设计模式-代理 Proxy

date
Apr 19, 2021
slug
design-pattern-proxy
status
Published
tags
设计模式
summary
type
Page

简介

代理与装饰器很像,都是在原有类基础上,增量做改动。
不同在于,代理模式下,client 直接操作的就是 proxy 对象,new 的就是 proxy 对象,不可以让 client 直接操作被代理对象,相当于原始类被完全隐藏掉了。
类比现实生活,租房代理是不会让客户直接跟房东联系的,客户签合同也是跟代理签,全程没有跟房东交互。
 

角色

  • 基础功能接口 Subject
    • 定义基本动作
       
  • 被代理类
    • 实现 Subject 接口,实现业务逻辑
       
  • Proxy 代理类
    • 实现 Subject接口
 

类图

图中ServiceInterface是基础接口,定义一个operation方法。Service是被代理类,实现了ServiceInterface接口,Proxy是代理类,也实现了ServiceInterface接口。
Proxy类的operation方法做了CheckAccess操作,允许的话再调用被代理类的operation方法。
notion image
 

代码

 
output:

© 菜皮 2020 - 2024