Java中的代理模式

代理模式在Java中扮演重要角色,通过让两个子类共同实现一个接口,其中一个完成真实业务,另一个辅助执行额外操作。例如,在购买化妆品场景中,用户是真实主题,而代购则作为代理执行如排队、运输等任务。在计算机领域,这一概念可应用于购物场景,通过定义业务接口,代理类负责诸如排队、支付和安装软件等预后工作,而用户只需关注核心的购买行为。

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

代理模式的特点:两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个子类完成辅助真实业务主题的操作。
代理模式其实在我们生活中特别常见,特别是近些年来,大家都喜欢用国外的东西,但又特别贵,特别是女生的化妆品,它贵主要是因为有税和运费,所以大家都喜欢去找代购买化妆品,可以剩下好多钱。
在这个模式中,真实的主题类是你自己,因为掏钱和使用的是你,而代购就是代理类,它只是负责辅助你完成买化妆品这个动作(排队、发快递…)。

例:比如我们要买一台电脑
首先,我们要定义一个业务接口,要定义我们要干什么事,具体是谁来干还不知道,所以要是一个接口。你自己是买电脑的真实客户,但是在买电脑之前和买电脑之后还要干一些事情,但是前后干的这些事和你真实的业务(买电脑)是没有关系的,前和后干的那些事只是辅助操作,所以有一个专门的类来帮你干这些辅助操作,你是买电脑的人,但你不想去排队、取钱、装软件,你想让别人去帮你干这些事,所以才有了代理类。

代理类就是帮你实现真实业务之前和之后的操作。

package www.java.test;

import com.sun.org.apache.xpath.internal.SourceTree;

//业务接口
interface ISubject{
    void buyComputer();
}
//真实主题类
class RealSubjectImpl implements ISubject{
    public void buyComputer(){
        System.out.println("买一台macbookpro");
    }
}
//代理类
class ProxySubjectImpl implements ISubject{
    private ISubject realSubject;
    //构造注入,注入真实主题类,构造函数传入的是接口类型的参数,是因为不知道具体的真实主题类是哪一个,所以传一个接口类型的
    public ProxySubjectImpl(ISubject realISubject){
        this.realSubject = realISubject;
    }
    public void beforeSubject(){
        System.out.println("去银行取钱、排队");
    }
    public void afterSubject(){
        System.out.println("装各种软件.......");
    }
    public void buyComputer(){
        //购买之前的操作
        beforeSubject();
        //真正的操作,但这个操作是客户来完成的,所以需要通过构造方法把真实客户传进来,通过真实主题类来完成这个操作
        this.realSubject.buyComputer();
        //购买之后的操作
        afterSubject();
    }
}
public class Test{
    public static void main(String[] args){
        //通过向上转型把真实主题类传进去了
        ISubject subject = new ProxySubjectImpl(new RealSubjectImpl());
        subject.buyComputer();
    }
}

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值