日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
抽象和實現(xiàn)分離,靈活易擴展的橋接模式

01 定義

02 案例

需求

通過企業(yè)微信和qq的方式給員工發(fā)送消息

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供云龍網(wǎng)站建設、云龍做網(wǎng)站、云龍網(wǎng)站設計、云龍網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、云龍企業(yè)網(wǎng)站模板建站服務,十多年云龍做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

方案一

定義發(fā)送消息的接口

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

定義普通消息接口

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

}

定義微信消息實現(xiàn)類

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

定義QQ消息實現(xiàn)類

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

定義測試類

/**
* 測試類
* @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();
}
}

測試結果

方案二

定義發(fā)送消息抽象接口

/**
* 發(fā)送消息的抽象接口
* @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();
}
}

定義發(fā)送消息實現(xiàn)類

/**
* 發(fā)送消息的實現(xiàn)接口
* @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();
}
}

定義發(fā)送消息統(tǒng)一接口

/**
* 發(fā)送消息統(tǒng)一接口
* @author:liyajie
* @createTime:2022/2/21 10:41
* @version:1.0
*/
public interface SendMsgImplementor {

void sendMsg();
}

定義微信發(fā)送消息實現(xiàn)類

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

定義QQ發(fā)送消息實現(xiàn)類

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

定義測試類

/**
* 測試類
* @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 對比分析

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

04 總結

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

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

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


新聞標題:抽象和實現(xiàn)分離,靈活易擴展的橋接模式
文章轉載:http://www.5511xx.com/article/dpdopgd.html