代理模式Golang

桥接模式

桥接模式(Bridge Pattern): 将抽象部分和现实分离, 使他们可以独立变化. 它是一种对象结构模式,
又称为柄体(Handle and Body)模式或接口(Interface)模式。
主要解决:主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;
由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

优点 和 缺点

优点:

  1. 分离抽象接口及其实现部分。
  2. 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。

缺点:

  1. 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
type AbstractMessage interface {
SendMessage(text, to string)
}

type MessageImplementer interface {
Send(text, to string)
}

type MessageSMS struct {
}


func ViaSMS() MessageImplementer {
return &MessageSMS{}
}
func (m *MessageSMS) Send(text, to string) {
fmt.Printf("send %s to %s via Email", text, to)
}

type MessageEmail struct {
}

func ViaEmail() MessageImplementer {
return &MessageEmail{}
}

func (*MessageEmail) Send(text, to string) {
fmt.Printf("send %s to %s via Email", text, to)
}

type CommonMessage struct {
method MessageImplementer
}

func NewCommonMessage(method MessageImplementer) *CommonMessage {
return &CommonMessage{
method: method,
}
}


func (m *CommonMessage) SendMessage(text, to string) {
m.method.Send(text, to)
}

type UrgencyMessage struct {
method MessageImplementer
}

func NewUrgencyMessage(method MessageImplementer) *UrgencyMessage {
return &UrgencyMessage{
method: method,
}
}

func (m *UrgencyMessage) SendMessage(text, to string) {
m.method.Send(fmt.Sprintf("[Urgency] %s", text), to)
}

Powered by Hexo and Hexo-theme-hiker

Copyright © 2018 - 2021 Noonde All Rights Reserved.

UV : | PV :