Bridge(桥接)设计模式
2015-10-05 18:03
239 查看
声明:本博文篇幅短,适合review。
一、概念
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
二、结构模式图
三、例子
class App
{
public:
virtual void run() = 0;
};
class PhotoShopApp : public App
{
public:
void run(){
cout<<"run PhotoShopApp"<<endl;
}
};
class FlashApp : public App
{
public:
void run(){
cout<<"run FlashApp"<<endl;
}
};
class Os
{
protected:
App * _app;
public:
void setSoft(App * app){
_app = app;
}
virtual void run(){}
};
class WinOs : public Os
{
public:
void run(){
_app->run();
}
};
class MacOs : public Os
{
public:
void run(){
_app->run();
}
};
void main()
{
Os * os1 = new WinOs();
os1->setSoft(new PhotoShopApp());
os1->run();
Os * os2 = new MacOs();
os2->setSoft(new FlashApp());
os2->run();
}
四、优缺点
1、优点
a、降低了代码冗余度,增加了类的可维护性,提高了可扩展性。
b、满足开闭原则。
c、分离了抽象和实现部分。
2、缺点
a、增加了系统的理解与设计难度。
b、使用时必须知道选择哪一种类型的实现。
一、概念
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
二、结构模式图
三、例子
class App
{
public:
virtual void run() = 0;
};
class PhotoShopApp : public App
{
public:
void run(){
cout<<"run PhotoShopApp"<<endl;
}
};
class FlashApp : public App
{
public:
void run(){
cout<<"run FlashApp"<<endl;
}
};
class Os
{
protected:
App * _app;
public:
void setSoft(App * app){
_app = app;
}
virtual void run(){}
};
class WinOs : public Os
{
public:
void run(){
_app->run();
}
};
class MacOs : public Os
{
public:
void run(){
_app->run();
}
};
void main()
{
Os * os1 = new WinOs();
os1->setSoft(new PhotoShopApp());
os1->run();
Os * os2 = new MacOs();
os2->setSoft(new FlashApp());
os2->run();
}
四、优缺点
1、优点
a、降低了代码冗余度,增加了类的可维护性,提高了可扩展性。
b、满足开闭原则。
c、分离了抽象和实现部分。
2、缺点
a、增加了系统的理解与设计难度。
b、使用时必须知道选择哪一种类型的实现。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- PropertyChangeListener简单理解
- 关于指针的一些事情
- 什么是设计模式
- 设计模式之创建型模式 - 特别的变量问题
- 七、设计模式——装饰模式
- 设计模式总结
- 设计模式之创建型模式
- 浅谈设计模式的学习
- c++ primer 第五版 笔记前言
- 架构纵横谈之二 ---- 架构的模式与要点
- share_ptr的几个注意点
- BS项目中的CSS架构_仅加载自己需要的CSS
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 关于三种主流WEB架构的思考
- C++联合体转换成C#结构的实现方法
- Android操作系统的架构设计分析
- C++编写简单的打靶游戏