代理模式之---静态代理

本文主要探讨代理模式中的静态代理,介绍了静态代理的概念、应用场景和优缺点。通过一个狗狗吃饭的例子,阐述了如何通过代理对象扩展目标对象的功能,强调了在不修改目标对象的情况下,代理模式可以增加额外的操作。文章还提及了静态代理的实现结构,包括主程序、Service接口、ServiceImpl实现类以及Proxy代理层。
摘要由CSDN通过智能技术生成

代理模式之—静态代理

代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。
被代理对象:可以是 远程对象、创建开销大的对象 或 需要安全控制的对象。
代理模式:分静态代理和动态代理,动态代理又分jdk代理和Cglib代理,而我喜欢直接分成三种。
1.静态代理
2.动态代理
3.Cglib代理

本文主要探讨代理模式中的静态代理模式。

从理论上来说:静态代理在使用时,需要定义接口或者父类,被代理对象(即目标对象)与代理对象一起实现相同的接口或者是继承相同父类。

这样来说是比较绕的,最开始我也没整明白,举个例子就好了:
首先明确我们的目标:
狗狗的肚子饿了,要去吃饭。
正常情况下是有想吃饭的想法,然后到餐桌去坐着,最后吃到骨头。
在这里插入图片描述

在这个时候改变需求啦:

狗狗肚子饿了,’需要先去洗手’,然后才能吃饭。(中途可能会有其他奇奇怪怪的要求,比如要洗个澡才能吃饭啦,要叫上哮天犬一起吃饭啦,之类的)
但是“狗狗肚子饿了”和“狗狗吃骨头”是不变的。
我们就可以使用代理模式,来给狗狗实现目标的基础上,增加额外的功能操作,即扩展目标对象的功能。可以新增proxy层(proxy:代理)
如:
在这里插入图片描述

这里要注意的是,proxy层的代理和serviceImpl层的类都是实现了service层的接口。所以用户只需要调用代理就行了。

还有点绕的换就来看看代码吧,别的不多说,话都在代码里。

静态代理类代码:

1.主程序/这里也比作controller,代码出发本就从controller开始嘛
public class EatController {
   

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值