php桥接模式的实例用法及代码分析

2025-05-29 0 68

说明

1、将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果。

2、结构分为Abstraction抽象类、RefindAbstraction被提炼的抽象类、Implementor实现类、ConcreteImplementor具体实现类 、Client客户端代码。

实例

?

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

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

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148
/**

* 颜色抽象类

* Class Colour

*/

abstract class Colour

{

/**

* @return mixed

*/

abstract public function run();

}

/**

* 黑色

* Class Black

*/

class Black extends Colour

{

public function run()

{

// TODO: Implement run() method.

return '黑色';

}

}

/**

* 白色

* Class White

*/

class White extends Colour

{

public function run()

{

// TODO: Implement run() method.

return '白色';

}

}

/**

* 红色

* Class Red

*/

class Red extends Colour

{

public function run()

{

// TODO: Implement run() method.

return '红色';

}

}

/**

* 形状抽象类

* Class Shape

*/

abstract class Shape

{

/**

* 颜色

* @var Colour

*/

protected $colour;

/**

* Shape constructor.

* @param Colour $colour

*/

public function __construct(Colour $colour)

{

$this->colour = $colour;

}

/**

* @return mixed

*/

abstract public function operation();

}

/**

* 圆形

* Class Round

*/

class Round extends Shape

{

/**

* @return mixed|void

*/

public function operation()

{

// TODO: Implement operation() method.

echo $this->colour->run() . '圆形<br>';

}

}

/**

* 长方形

* Class Rectangle

*/

class Rectangle extends Shape

{

/**

* @return mixed|void

*/

public function operation()

{

// TODO: Implement operation() method.

echo $this->colour->run() . '长方形<br>';

}

}

/**

* 正方形

* Class Square

*/

class Square extends Shape

{

/**

* @return mixed|void

*/

public function operation()

{

// TODO: Implement operation() method.

echo $this->colour->run() . '正方形<br>';

}

}

// 客户端代码

// 白色圆形

$whiteRound = new Round(new White());

$whiteRound->operation();

// 黑色正方形

$blackSquare = new Square(new Black());

$blackSquare->operation();

// 红色长方形

$redRectangle = new Rectangle(new Red());

$redRectangle->operation();

运行结果

白色圆形
黑色正方形
红色长方形

内容扩展:

桥接模式

桥连模式:将抽象部分与实现部分分离,使它们都可以独立的变化。它是一种结构性模式,又称柄体(Handle and body)模式或者接口(Interface)模式。 当一个抽象可能有多个实现时,通常用继承来协调他们。抽象类的定义对该抽象的接口。而具体的子类则用不同的方式加以实现,但是此方法有时不够灵活。继承机制将抽象部分与他的视线部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和充用。

理解桥接模式,重点需要理解如何将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。

•抽象化:抽象化就是忽略一些信息,把不同的实体当作同样的实体对待。在面向对象中,将对象的共同性质抽取出来形成类的过程即为抽象化的过程。

•实现化:针对抽象化给出的具体实现,就是实现化,抽象化与实现化是一对互逆的概念,实现化产生的对象比抽象化更具体,是对抽象化事物的进一步具体化的产物。

•脱耦:脱耦就是将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联,将两个角色之间的继承关系改为关联关系。桥接模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用关联关系(组合或者聚合关系)而不是继承关系,从而使两者可以相对独立地变化,这就是桥接模式的用意。

适用性

1). 你不希望在抽象和他的实现部分之间有一个固定的邦定关系,如在程序的运行时刻实现部分应该可以被选择或者切换。

2). 类的抽象以及他的视像都可以通过生成子类的方法加以扩充。这时bridge模式使你可以对不同的抽象接口

和实现部分进行组合,并对他们进行扩充。

3). 对一个抽象的实现部分的修改应该对客户不产生影响,即客户的代码不需要重新编译。

4). 你想对客户完全隐藏抽象的实现部分。

5). 你想在多个实现间 共享实现,但同时要求客户并不知道这一点。

到此这篇关于php桥接模式的实例用法及代码分析的文章就介绍到这了,更多相关php桥接模式是什么内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://www.py.cn/php/jiaocheng/31360.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 php桥接模式的实例用法及代码分析 https://www.kuaiidc.com/89734.html

相关文章

发表评论
暂无评论