一、概述
1、桥接模式将抽象部分与它的实现部分分离,使它们都可以独立的变化。
2、在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,桥接模式把这种多维度分离出来,让他们独立变化,减少之间的耦合。
感觉桥接模式的结构有点像抽象工厂模式,但桥接模式属于结构型模式,而抽象工厂模式属于创建型模式。
3、UML
4、所属类别:结构型
二、C++程序
和抽象工厂中的例子保持一致,这里还以linux、windows系统、手机、电脑为例
1 // 桥接模式.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include<iostream>
6 using namespace std;
7 class Ruanjian
8 {
9 public:
10 Ruanjian(){}
11 ~Ruanjian(){}
12 virtual void OS()=0;
13 };
14 class Linux :public Ruanjian
15 {
16 public:
17 Linux(){}
18 virtual ~Linux(){}
19 virtual void OS()
20 {
21 cout<<"我运行的是Linux系统"<<endl;
22 }
23 };
24 class Windows :public Ruanjian
25 {
26 public:
27 Windows(){}
28 virtual ~Windows(){}
29 virtual void OS()
30 {
31 cout<<"我运行的是Windows系统"<<endl;
32 }
33 };
34 class Yingjian
35 {
36 public:
37 Yingjian(){}
38 virtual ~Yingjian(){}
39 virtual void run()=0;
40 };
41 class PC:public Yingjian
42 {
43 private:
44 Ruanjian * software;
45 public:
46 PC(Ruanjian* r)
47 {
48 software=r;
49 }
50 virtual ~PC(){}
51 virtual void run()
52 {
53 cout<<"我是一个PC";
54 software->OS();
55 }
56 };
57 class Phone:public Yingjian
58 {
59 private:
60 Ruanjian * software;
61 public:
62 Phone(Ruanjian* r)
63 {
64 software=r;
65 }
66 virtual ~Phone(){}
67 virtual void run()
68 {
69 cout<<"我是一个Phone";
70 software->OS();
71 }
72 };
73
74 int _tmain(int argc, _TCHAR* argv[])
75 {
76 Linux* l=new Linux();
77 Phone *p=new Phone(l);
78 p->run();
79 return 0;
80 }