当前位置:首页 > 科技  > 软件

【设计模式】通过苹果的隔空投送了解中介者模式

来源: 责编: 时间:2023-10-08 07:06:11 339观看
导读背景通过隔空投送(Mediator),解决苹果设备(Component)之间的文件传输的问题。它通过一个中心化的服务来协调多个设备间的文件传输,这些设备不需要知道对方的具体实现细节,只需要知道如何与这个中心服务交互。模式定义Define

背景

通过隔空投送(Mediator),解决苹果设备(Component)之间的文件传输的问题。kHd28资讯网——每日最新资讯28at.com

它通过一个中心化的服务来协调多个设备间的文件传输,这些设备不需要知道对方的具体实现细节,只需要知道如何与这个中心服务交互。kHd28资讯网——每日最新资讯28at.com

kHd28资讯网——每日最新资讯28at.com

模式定义

Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.kHd28资讯网——每日最新资讯28at.com

定义一个对象来封装一组对象的交互方式。Mediator通过防止对象显式地相互引用来促进松耦合,并且允许您独立地改变它们的交互。kHd28资讯网——每日最新资讯28at.com

模式结构

kHd28资讯网——每日最新资讯28at.com

模式实现

kHd28资讯网——每日最新资讯28at.com

1.设备定义

package com.example.designpattern.mediator.device;/** * 苹果设备接口 * * @author hongcunlin */public interface AppleDevice {    /**     * 发数据     *     * @param data 数据     */    void sendData(String data);    /**     * 接收数据     *     * @param data 数据     */    void receiveData(String data);}

2.设备实现(iPhone、MacBook)

iPhone

package com.example.designpattern.mediator.device.impl;import com.example.designpattern.mediator.device.AppleDevice;import org.springframework.stereotype.Component;/** * 手机 * * @author hongcunlin */@Component("iPhoneDevice")public class IPhoneDeviceImpl implements AppleDevice {    @Override    public void sendData(String data) {        System.out.println("iPhone发送数据:" + data);    }    @Override    public void receiveData(String data) {        System.out.println("iPhone接收数据" + data);    }}

MacBook

package com.example.designpattern.mediator.device.impl;import com.example.designpattern.mediator.device.AppleDevice;import org.springframework.stereotype.Component;/** * 笔记本电脑 * * @author hongcunlin */@Component("macBookDevice")public class MacBookDeviceImpl implements AppleDevice {    @Override    public void sendData(String data) {        System.out.println("MacBook发送数据:" + data);    }    @Override    public void receiveData(String data) {        System.out.println("MacBook接收数据:" + data);    }}

3.中介者定义

package com.example.designpattern.mediator.mediator;/** * 中介 * * @author hongcunlin */public interface AirDropMediator {    /**     * 隔空投放     *     * @param data 数据     */    void drop(String data);}

4.中介者实现

package com.example.designpattern.mediator.mediator.impl;import com.example.designpattern.mediator.device.AppleDevice;import com.example.designpattern.mediator.mediator.AirDropMediator;import lombok.AllArgsConstructor;import lombok.Setter;/** * 中介实现 * * @author hongcunlin */@Setter@AllArgsConstructorpublic class AirDropMediatorImpl implements AirDropMediator {    /**     * 发送方     */    private AppleDevice sender;    /**     * 接收方     */    private AppleDevice receiver;    @Override    public void drop(String data) {        sender.sendData(data);        receiver.receiveData(data);    }}

5.测试

package com.example.designpattern.mediator;import com.example.designpattern.mediator.device.AppleDevice;import com.example.designpattern.mediator.mediator.AirDropMediator;import com.example.designpattern.mediator.mediator.impl.AirDropMediatorImpl;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;/** * 中介者模式测试 * * @author hongcunlin */@SpringBootTestpublic class DesignPatternTest {    /**     * iPhone设备     */    @Resource(name = "iPhoneDevice")    private AppleDevice iPhoneDevice;    /**     * MacBook设备     */    @Resource(name = "macBookDevice")    private AppleDevice macBookDevice;    @Test    public void test() {        // 中介者        AirDropMediator airDropMediator = new AirDropMediatorImpl(iPhoneDevice, macBookDevice);        // 隔空投送        airDropMediator.drop("iPhone上的信息");    }}

通过iPhone给MacBook发送数据kHd28资讯网——每日最新资讯28at.com

kHd28资讯网——每日最新资讯28at.com

测试时的结果是符合预期的kHd28资讯网——每日最新资讯28at.com

回顾

本文通过苹果的隔空投送AirDrop,抽象出中介者模式的实现。同时,不同于传统说教,本文是基于企业开发必用的框架Spring,贴近实际开发。kHd28资讯网——每日最新资讯28at.com

中介者模式在实际开发中,还是挺少见的,特别是在当今的分布式微服务架构时代,如果涉及不同的领域的,一般都进行了服务拆分了,然后彼此通过RPC联系,或者退一步讲,RPC框架做的事情,算是中介者吧。kHd28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-12373-0.html【设计模式】通过苹果的隔空投送了解中介者模式

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 搭建程序员自己的在线工具库 it-tools

下一篇: 【设计模式】通过游戏存档了解备忘录模式

标签:
  • 热门焦点
  • 0糖0卡0脂 旭日森林仙草乌龙茶优惠:15瓶到手29元

    旭日森林无糖仙草乌龙茶510ml*15瓶平时要卖为79.9元,今日下单领取50元优惠券,到手价为29.9元。产品规格:0糖0卡0脂,添加草本仙草汁,清凉爽口,富含茶多酚,保留
  • 服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • 不容错过的MSBuild技巧,必备用法详解和实践指南

    一、MSBuild简介MSBuild是一种基于XML的构建引擎,用于在.NET Framework和.NET Core应用程序中自动化构建过程。它是Visual Studio的构建引擎,可在命令行或其他构建工具中使用
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 拼多多APP上线本地生活入口,群雄逐鹿万亿市场

    Tech星球(微信ID:tech618)文 | 陈桥辉 Tech星球独家获悉,拼多多在其APP内上线了“本地生活”入口,位置较深,位于首页的“充值中心”内,目前主要售卖美食相关的
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • OPPO K11搭载长寿版100W超级闪充:26分钟充满100%

    据此前官方宣布,OPPO将于7月25日也就是今天下午14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖
Top