6 Bridge模式
6.1 概述
Bridage模式就是把抽象部分和它的实现部分分离开来,让两者可独立变化。这里的抽象部分指的是一个概念层次上的东西,它的实现部分指的是实现这个东西的(功能)部分,分离就把实现部分从它要实现的抽象部分独立出来,自我封装成对象。
6.2 设计
思路简单理解就是:在类中抽离方法形成另一个类。比如对于动物狗,有行走功能。一般我们设计时,把狗设计成一个类,里面有方法“行走”。那么Bridge模式就是把“行走”方法从“狗”类中抽离出来,形成“行走”类,并在“狗”类中使用这个“行走”对象,实现行走功能。这样,“狗”类和“行走”类都可以独立变化。
6.3 实现
UML图:
示例代码为:
1
using System;
2
3
namespace Example
4
{
5
/// <summary>
6
/// 示例
7
/// </summary>
8
class Example
9
{
10
/// <summary>
11
/// 应用程序的主入口点。
12
/// </summary>
13
[STAThread]
14
static void Main(string[] args)
15
{
16
Run r = new Run() ;//狗跑
17
Dog a = new Dog( r ) ;
18
Console.Write( "Dog can " ) ;
19
a.Move() ;
20
21
Fly f = new Fly() ;//鸟飞
22
Bird b = new Bird( f ) ;
23
Console.Write( "Bird can " ) ;
24
b.Move() ;
25
}
26
/// <summary>
27
/// 动物(抽象部分)
28
/// </summary>
29
public class Animal
30
{
31
protected Movement move = null ;
32
33
public Animal( Movement m )
34
{
35
move = m ;
36
}
37
public virtual void Move()
38
{
39
move.Move() ;
40
}
41
}
42
/// <summary>
43
/// 狗
44
/// </summary>
45
public class Dog : Animal
46
{
47
public Dog( Movement m ) : base( m ) {}
48
public override void Move()//狗运动
49
{
50
move.Move() ;
51
}
52
}
53
/// <summary>
54
/// 鸟
55
/// </summary>
56
public class Bird : Animal
57
{
58
public Bird( Movement m ) : base( m ) {}
59
public override void Move()//鸟运动
60
{
61
move.Move() ;
62
}
63
}
64
/// <summary>
65
/// 运动(实现部分)
66
/// </summary>
67
public class Movement
68
{
69
public Movement() {}
70
public virtual void Move()
71
{
72
Console.WriteLine( "Move" ) ;
73
}
74
}
75
/// <summary>
76
/// 具体的运动——跑
77
/// </summary>
78
public class Run : Movement
79
{
80
public Run() {}
81
public override void Move()
82
{
83
Console.WriteLine( "Run" ) ;
84
}
85
}
86
/// <summary>
87
/// 具体的运动——飞
88
/// </summary>
89
public class Fly : Movement
90
{
91
public Fly() {}
92
public override void Move()
93
{
94
Console.WriteLine( "Fly" ) ;
95
}
96
}
97
}
98
}
99

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

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)