go-pattern-examples/structure/03_bridge/README.md

24 lines
1.5 KiB
Markdown
Raw Normal View History

2020-04-21 17:50:21 +03:00
# 桥接模式
2020-04-28 11:37:17 +03:00
桥接模式类似于策略模式,原因在于他们都将行为交给了另一个接口实现,再组合实现完整功能/流程/业务.
2020-04-21 17:50:21 +03:00
2020-04-28 11:37:17 +03:00
区别在于策略模式封装一系列算法/方法/功能/使得他们可以互相替换,关键点在于策略模式的实现方法可以动态替换,但是桥接模式的特点是,一旦组合运行时一般不会发生变化.
2020-04-28 09:43:58 +03:00
2020-04-28 11:37:17 +03:00
桥接模式的变化点在于调用方是变化的.
2020-04-21 17:50:21 +03:00
2020-04-28 11:37:17 +03:00
在策略模式的例子中,银行就一个,但是储户类型是多个,银行需要为不同类型的用户服务,银行有同一个规则流程和处理方法,但是不同的用户对相同处理过程的响应和处理不一样。
在桥接模式中,消息类型是多个,转给不同的处理对象.
演示1个例子场景如下
对于Web应用系统当平台后端收到消息并需要推送的时候常见有四种选择
1、通过第三方的的Internet通道离线推送到手机通知用户
2、通过邮件通知到用户
3、通过在线的长连接进行websocket推送
4、通过手机4G/5G的短信通道通知到用户
2020-04-30 10:26:50 +03:00
选择其中的二三两类进行演示。
桥接体现在发送`WSMessage`类型消息的时候,`WSMessage`不是直接发送的而是顺序转交给`EmergencyWSMessage`,由于`EmergencyWSMessage`执行发送动作,并且一开始`EmergencyWSMessage`就知道自己要发送`EmergencyWSMessage`消息,因为在初始化时候`EmergencyWSMessage`对象就直接绑定在了`WSMessage`上.