常用设计模式 - 代理模式

本文通过小洪筹备婚礼的故事,生动解释了代理模式的概念和作用。小洪通过婚庆公司(代理)来组织婚礼,实现了对原对象(小洪自己)的访问控制。文中展示了静态代理的实现方式,包括定义结婚接口、小洪的婚姻实现、婚庆公司的代理实现以及客户端调用。代理模式使得复杂任务的组织和协调变得更加简单。
摘要由CSDN通过智能技术生成

代理模式

代理模式又叫委托模式,是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。通俗来讲,代理模式就是我们生活中常见的中介。

小洪的故事

出场人物:小洪、小洪的女朋友

静态代理

“等了好久终于等到今天,盼了好久终于把梦实现。”蓝牙音箱中无限循环着这首歌。对于小洪来说,今天注定是不平凡的一天。

“我要结婚了!”小洪将头发梳成大人模样,再穿上一身帅气西装,想象着自己有多帅。

就在这时,沉浸在幻想中的小洪猛地从幻想中冷静回来:“啊,这个婚礼如何举办啊?场地布置、婚礼的策划、灯光等。这些我都不会弄啊。这可怎么办?”

这时,小洪想起老师曾叮嘱过的代理模式。

“对啊,我只需要找到一个代理——婚庆公司,就可以帮我实现人生大事了!”,小洪脑海里浮现了代理模式的模样。

在这里插入图片描述

首先要确认一下结婚的接口
public interface Marry {
    // 场地布置
    void place();
    // 策划
    void marryPlan();
    // 灯光
    void light();
}
小洪的婚姻要实现这个接口
public class MyMarry implements Marry {

    @Override
    public void place() {
        System.out.println("婚礼地点:基督大教堂");
    }

    @Override
    public void marryPlan() {
        System.out.println("结婚方案:A");
    }

    @Override
    public void light() {
        System.out.println("灯光:绚丽多彩的灯光");
    }
}

找了半天,小洪终于找到了一家适合自己的婚庆公司。

婚庆公司的类如下
public class MarryCompany implements Marry {
    private Marry marry = null;

    public MarryCompany(Marry marry) {
        this.marry = marry;
    }

    @Override
    public void place() {
        this.marry.place();
    }

    @Override
    public void marryPlan() {
        this.marry.marryPlan();
    }

    @Override
    public void light() {
        this.marry.light();
    }

    public void doMarry() {
        this.place();
        this.marryPlan();
        this.light();
    }
}
客户端调用
public class Me {
    public static void main(String[] args) {
        Marry marry = new MyMarry();
        MarryCompany marryCompany = new MarryCompany(marry);
        marryCompany.doMarry();
    }
}

包办完这些,小洪终于能够如愿以偿地踏入这个神圣的殿堂,只见一袭白裙、头戴白纱巾的新娘子站在殿堂上。小洪笑着走了过去。

笑是没问题,可这一笑却把小洪笑醒了。

醒来的小洪看着宿舍熟悉而又陌生的场景,不由得大吼一声:“我怎么还没有女朋友啊!”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值