日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

【設計模式】通過蘋果的隔空投送了解中介者模式

來源: 責編: 時間:2023-10-08 07:06:11 257觀看
導讀背景通過隔空投送(Mediator),解決蘋果設備(Component)之間的文件傳輸的問題。它通過一個中心化的服務來協調多個設備間的文件傳輸,這些設備不需要知道對方的具體實現細節,只需要知道如何與這個中心服務交互。模式定義Define

背景

通過隔空投送(Mediator),解決蘋果設備(Component)之間的文件傳輸的問題。z7p28資訊網——每日最新資訊28at.com

它通過一個中心化的服務來協調多個設備間的文件傳輸,這些設備不需要知道對方的具體實現細節,只需要知道如何與這個中心服務交互。z7p28資訊網——每日最新資訊28at.com

z7p28資訊網——每日最新資訊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.z7p28資訊網——每日最新資訊28at.com

定義一個對象來封裝一組對象的交互方式。Mediator通過防止對象顯式地相互引用來促進松耦合,并且允許您獨立地改變它們的交互。z7p28資訊網——每日最新資訊28at.com

模式結構

z7p28資訊網——每日最新資訊28at.com

模式實現

z7p28資訊網——每日最新資訊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發送數據z7p28資訊網——每日最新資訊28at.com

z7p28資訊網——每日最新資訊28at.com

測試時的結果是符合預期的z7p28資訊網——每日最新資訊28at.com

回顧

本文通過蘋果的隔空投送AirDrop,抽象出中介者模式的實現。同時,不同于傳統說教,本文是基于企業開發必用的框架Spring,貼近實際開發。z7p28資訊網——每日最新資訊28at.com

中介者模式在實際開發中,還是挺少見的,特別是在當今的分布式微服務架構時代,如果涉及不同的領域的,一般都進行了服務拆分了,然后彼此通過RPC聯系,或者退一步講,RPC框架做的事情,算是中介者吧。z7p28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-12373-0.html【設計模式】通過蘋果的隔空投送了解中介者模式

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 搭建程序員自己的在線工具庫 it-tools

下一篇: 【設計模式】通過游戲存檔了解備忘錄模式

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 盘山县| 鲁甸县| 乌鲁木齐县| 合江县| 濉溪县| 铜山县| 绥阳县| 岚皋县| 通州市| 绥棱县| 平顺县| 平远县| 皋兰县| 安徽省| 板桥市| 墨脱县| 阿瓦提县| 安远县| 嘉定区| 永昌县| 杭锦后旗| 泾源县| 木兰县| 开化县| 安宁市| 万安县| 寿阳县| 扶余县| 贺兰县| 松桃| 兴山县| 桑植县| 化德县| 乌拉特前旗| 蒙自县| 赫章县| 眉山市| 巴中市| 淳化县| 北安市| 临湘市|