您现在的位置是:亿华云 > IT科技类资讯

抽象和实现分离,灵活易扩展的桥接模式

亿华云2025-10-09 15:33:09【IT科技类资讯】5人已围观

简介01 定义桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化

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公众号。

很赞哦!(7)