成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

抽象和實現分離,靈活易擴展的橋接模式

開發 架構
橋梁模式是對象的結構模式。又稱為柄體(Handle and Body)模式或接口(Interface)模式。橋梁模式分離了抽象部分和實現部分,從而極大地提供了系統的靈活性。橋梁模式使得抽象部分和實現部分可以分別獨立地擴展,而不會相互影響,從而大大提高了系統的可擴展性。

01 定義

橋梁模式是對象的結構模式。又稱為柄體(Handle and Body)模式或接口(Interface)模式。橋梁模式的用意是“將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化”。

02 案例

需求

通過企業微信和qq的方式給員工發送消息

方案一

定義發送消息的接口

/**
* 發送消息的接口
* @author:liyajie
* @createTime:2022/2/21 10:33
* @version:1.0
*/
public interface AbstractSendMsgService {
// 發送消息
public void sendMsg();
}

定義普通消息接口

/**
* 普通消息接口
* @author:liyajie
* @createTime:2022/2/21 11:32
* @version:1.0
*/
public interface CommonMsg extends AbstractSendMsgService{

}

定義微信消息實現類

/**
* 發送消息的實現接口
* @author:liyajie
* @createTime:2022/2/21 10:35
* @version:1.0
*/
public class WxMsgServiceImpl implements CommonMsg{
@Override
public void sendMsg() {
System.out.println("老板使用微信給你發了消息,快去接收吧");
}
}

定義QQ消息實現類

/**
* 發送消息的實現接口
* @author:liyajie
* @createTime:2022/2/21 10:35
* @version:1.0
*/
public class QqMsgServiceImpl implements CommonMsg{
@Override
public void sendMsg() {
System.out.println("老板使用QQ給你發了消息,快去接收吧");
}
}

定義測試類

/**
* 測試類
* @author:liyajie
* @createTime:2022/2/21 10:37
* @version:1.0
*/
public class Test {
public static void main(String[] args) {
new WxMsgServiceImpl().sendMsg();
new QqMsgServiceImpl().sendMsg();
}
}

測試結果

方案二

定義發送消息抽象接口

/**
* 發送消息的抽象接口
* @author:liyajie
* @createTime:2022/2/21 10:33
* @version:1.0
*/
public abstract class NewAbstractSendMsgService {

protected SendMsgImplementor sendMsgImplementor;

public NewAbstractSendMsgService(SendMsgImplementor sendMsgImplementor){
this.sendMsgImplementor = sendMsgImplementor;
}

// 微信
public void sendMsg(){
this.sendMsgImplementor.sendMsg();
}
}

定義發送消息實現類

/**
* 發送消息的實現接口
* @author:liyajie
* @createTime:2022/2/21 10:35
* @version:1.0
*/
public class NewSendMsgServiceImpl extends NewAbstractSendMsgService{

public NewSendMsgServiceImpl(SendMsgImplementor sendMsgImplementor) {
super(sendMsgImplementor);
}

@Override
public void sendMsg() {
super.sendMsg();
}
}

定義發送消息統一接口

/**
* 發送消息統一接口
* @author:liyajie
* @createTime:2022/2/21 10:41
* @version:1.0
*/
public interface SendMsgImplementor {

void sendMsg();
}

定義微信發送消息實現類

/**
* 微信發送消息
* @author:liyajie
* @createTime:2022/2/21 10:45
* @version:1.0
*/
public class WxImplementor implements SendMsgImplementor{
@Override
public void sendMsg() {
System.out.println("老板使用微信給你發了消息,快去接收吧");
}
}

定義QQ發送消息實現類

/**
* QQ發送消息
* @author:liyajie
* @createTime:2022/2/21 10:45
* @version:1.0
*/
public class QqImplementor implements SendMsgImplementor{
@Override
public void sendMsg() {
System.out.println("老板使用QQ給你發了消息,快去接收吧");
}
}

定義測試類

/**
* 測試類
* @author:liyajie
* @createTime:2022/2/21 10:37
* @version:1.0
*/
public class TestNew {
public static void main(String[] args) {
NewSendMsgServiceImpl newSendMsgService = new NewSendMsgServiceImpl(new QqImplementor());
newSendMsgService.sendMsg();

NewSendMsgServiceImpl newSendMsgService2 = new NewSendMsgServiceImpl(new WxImplementor());
newSendMsgService2.sendMsg();
}
}

測試結果

03 對比分析

  • 方案一,即一般實現方式,微信和QQ兩種發送消息的方式需要同時去實現CommonMsg和AbstractSendMsgService兩個接口中的方法,耦合性較高;另外比如新增緊急消息的發送或者新增短信的方式發送消息的需求,改動較多,擴展性較差。
  • 方案二,為橋接模式實現方式,在消息類的構造方法中傳入接口SendMsgImplementor,從而使發送消息的抽象和具體實現進行了分離,實現了解耦;后期新增緊急消息的發送或者新增短信的方式發送消息的需求,也只需要新增緊急消息類和短信發送類即可,和QQ,微信等發送消息互不影響,擴展方便,符合開閉原則,復用原則。

04 總結

橋梁模式分離了抽象部分和實現部分,從而極大地提供了系統的靈活性。讓抽象部分和實現部分獨立出來,分別定義接口,這有助于對系統進行分層,從而產生更好的結構化的系統。

橋梁模式使得抽象部分和實現部分可以分別獨立地擴展,而不會相互影響,從而大大提高了系統的可擴展性。

本文轉載自微信公眾號「溫故知新之java」,可以通過以下二維碼關注。轉載本文請聯系溫故知新之java公眾號。

責任編輯:武曉燕 來源: 溫故知新之java
相關推薦

2024-04-12 12:10:18

Python設計模式開發

2020-10-28 11:56:47

橋接模式

2022-01-14 09:22:22

設計模式橋接

2021-03-05 07:57:41

設計模式橋接

2022-05-11 08:17:15

Java字符串API

2011-06-01 16:10:42

JNBridge

2015-11-12 09:32:03

Javascript設計模式

2010-03-19 11:07:57

點對點無線橋接模式

2010-02-06 15:17:41

Ubuntu Serv

2011-11-10 16:43:59

WDS無線橋接

2022-06-20 14:59:14

讀寫分離模Loki

2025-02-11 07:55:45

2021-10-22 09:41:26

橋接模式設計

2020-05-08 17:05:11

VMware網絡NAT

2010-04-09 16:15:02

無線橋接設置

2010-04-08 17:02:14

無線橋接方案

2024-03-06 13:19:19

工廠模式Python函數

2009-08-18 11:12:34

Ubuntu下Virt橋接網絡配置

2012-02-29 13:42:32

小型蜂窩無線網絡蜂窩網絡

2010-04-16 09:36:45

JDBC橋接Oracl
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品91 | 亚洲乱码国产乱码精品精98午夜 | 青青久草 | 中文字幕成人在线 | 黄色一级大片在线免费看产 | 欧美激情一区二区三区 | 暴草美女| 精品国产一区二区三区在线观看 | 国产精品大全 | 午夜视频在线免费观看 | 亚洲免费精品 | 国产一区二区精品在线观看 | 日本精品一区二区三区在线观看 | 91精品久久久 | 国产91成人| 久久亚洲美女 | 成人精品国产一区二区4080 | 久久精品亚洲 | 国产精品国产三级国产aⅴ无密码 | 一区二区三区不卡视频 | 在线观看国产精品一区二区 | 国产在线观看一区二区三区 | 日本成人三级电影 | 欧美αv| 91短视频网址 | 狠狠色综合久久丁香婷婷 | 亚洲福利一区二区 | 精品一区国产 | 国产 欧美 日韩 一区 | www.久久 | 国产成人一区二区三区 | 天天天天操 | 国产探花 | 国产一级毛片精品完整视频版 | 岛国午夜| 成人国产精品入口免费视频 | 91精品国产91久久久久久 | 亚洲精品久久久久久久久久久久久 | 在线观看中文字幕视频 | 久色视频在线 | 蜜桃精品视频在线 |