桥接模式
2015-01-27 14:54 itwolf 阅读(358) 评论(0) 编辑 收藏 举报一、概述
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 }