hjr-设计模式:代理模式

本文介绍了一种软件设计模式——代理模式,通过将直接访问对象替换为代理对象,实现了延迟加载、安全控制及辅助处理等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一句话解释,就是买房子直接和中介沟通代替了和开发商沟通

过程

我们想要实现一个功能

  1. 建一个接口I定义该功能。
  2. 建一个类A实现该接口。
  3. 但是我们又不想让别人知道这个功能是A实现的,因此建一个类B实现接口I
    关键来了
    类B并不是像A那样真的实现接口I定义的功能,而是建一个A类的引用,然后实现时调用了A的实现,如:
I;//定义接口

//真实类
Class A :: I
{
	实现I;
}
//代理类
Class B :: I
{
	A a = null;
	a.实现
}
//使用代理
B b = new B();
b.实现;

功能是A实现的,但是我们例化的却是B,在使用B实现功能的时候隐藏了ABA的代理。

作用

延迟加载

比如类A要干很多事,有时程序初始化需要例化A,这样很慢,可以改成如:

初始化时用B b = new B();代替A a = new A();//节省时间
.
.
.
//这里需要用到A的功能了
b.实现

安全代理

在代理类里面完成权限检查

辅助代理

当调用真实的对象时,代理处理另外一些事。比如计算真实对象的引用次数,这样当该对象没有引用时,可以自动释放它。

虚拟代理

虚拟代理,比如打开一个包含了大量的文字和图片的网页,我们可以很快看到文字,但是图片却是一张一张地下载后才能看到,那些未打开的图片框,就是通过虚拟代里来替换了真实的图片,此时代理存储了真实图片的路径和尺寸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

架构师小侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值