Bridge(桥接)

7. Bridge(桥接)

7.1 定义

  将抽象和实现解耦,使得两者可以独立地变化

7.2 优点

  ■ 抽象和实现分离是桥梁模式的主要特点,是为了解决继承的缺点而提出的设计模式。在该模式下,实现可以不受抽象的约束,不用绑定在一个固定的抽象层次上。

  ■ 实现对客户透明,客户端不用关心细节的实现,它已经由抽象层通过聚合关系完成了封装。

  ■ 提高灵活性和扩展性。

7.3  桥梁模式的使用场合

  ■ 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。

  ■ 设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。

  ■ 一个构件有多于一个的抽象化角色和实现化角色,系统需要它们之间进行动态耦合。

7.4 c++源码实例

 1 #include<iostream>
 2 using namespace std;
 3 
 4 //抽象颜色类
 5 class Color{
 6 public:
 7     virtual string getColor() = 0;
 8 };
 9 
10 //抽象形状类
11 class AbstractShape{
12 public:
13     virtual void draw(Color* color) = 0;
14 };
15 
16 //具体形状类
17 class Circle:public AbstractShape{
18     void draw(Color* color){
19         cout<<"draw a "+ color->getColor()  +" Circle"<<endl;
20     }
21 };
22 //具体形状类
23 class Square:public AbstractShape{
24     void draw(Color* color){
25         cout<<"draw a "+ color->getColor() +" Square"<<endl;
26     }
27 };
28 //具体颜色类
29 class Red:public Color{
30      string getColor(){
31         return "red";
32     }
33 };
34 //具体颜色类
35 class Green:public Color{
36      string getColor(){
37         return "Green";
38     }
39 };
40 
41 int main(){
42     Color* color = new Green();
43     AbstractShape* shape = new Square();
44     shape->draw(color);
45     delete color;
46     color = NULL;
47     delete shape;
48     shape = NULL;
49 }

 

posted @ 2020-11-05 14:31  昨日明眸  阅读(559)  评论(0)    收藏  举报