go-pattern-examples/structure/03_bridge/README.md
2020-05-02 17:40:51 +08:00

24 lines
1.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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