设计模式-静态代理

本文介绍了如何使用代理模式,通过创建接口Star定义明星功能,实现实体类RealStar和代理类ProxyStar。实例中,真实明星仅需关注核心表演,代理则负责通用操作,如沟通和财务。测试类展示了代理如何调用真实对象的方法。

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


前言

主要是为了让代理来帮真实对象来实现通用的功能,而真实对象只需要实现自己独有的功能即可,场景:比如中介代理、明星的经纪人代理之类的。实现:通过构建接口,真实对象实现接口,代理对象也实现接口,但是代理对象里还需要有真实对象,在实现真实对象的特定功能时通过真实对象调用真实对象的方法实现即可。这里以明星和代理来做举例


提示:以下是具体实现,个中滋味可以自己体会。

一、接口Star

明星接口

public interface Star {
    /*
    面谈
     */
    void confer();
    /*
    签合同
     */
    void singContract();
    /*
    订票
     */
    void bookTicket();
    /*
    唱歌
     */
    void sing();
    /*
    结尾款
     */
    void collectMoney();
}

二、创建真实对象类

public class RealStar implements Star {
    @Override
    public void confer() {
        System.out.println("RealStar.confer()");
    }
    @Override
    public void singContract() {
        System.out.println("RealStar.singContract()");
    }
    @Override
    public void bookTicket() {
        System.out.println("RealStar.bookTicket()");
    }
    @Override
    public void sing() {
        System.out.println("RealStar(真人).sing()");
    }
    @Override
    public void collectMoney() {
        System.out.println("RealStar.collectMoney()");
    }
}

三、创建代理类

public class ProxyStar implements Star{
    private Star star;
    public ProxyStar(Star star) {
        this.star = star;
    }
    @Override
    public void confer() {
        System.out.println("ProxyStar.confer()");
    }
    @Override
    public void singContract() {
        System.out.println("ProxyStar.singContract()");
    }
    @Override
    public void bookTicket() {
        System.out.println("ProxyStar.bookTicket()");
    }
    @Override
    public void sing() {
        star.sing();
    }
    @Override
    public void collectMoney() {
        System.out.println("ProxyStar.collectMoney()");
    }
}

四、测试类编写以及运行结果

public class Client {
    public static void main(String[] args) {
        Star real = new RealStar();
        Star proxy = new ProxyStar(real);
        proxy.confer();
        proxy.singContract();
        proxy.bookTicket();
        proxy.sing();
        proxy.collectMoney();
    }
}

运行结果如下:

ProxyStar.confer()
ProxyStar.singContract()
ProxyStar.bookTicket()
RealStar(真人).sing()
ProxyStar.collectMoney()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值