博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Design Pattern - Bridge
阅读量:6219 次
发布时间:2019-06-21

本文共 1515 字,大约阅读时间需要 5 分钟。

hot3.png

评价: 

      Adapter用于对其他的类匹配某些接口,使之可以在某系统统一工作, 比如jdbc或odbc,等标准接口的转换.

      Bridge是一个战役级别的模式,它模拟了COM的思想,不过是COM二进制级别分离,它是代码模块级别的接口与实现分离, 而且带有注入影响性.

适用场景:(战役级别)

1。 实现接口系统和实现系统的分离,这样可以保持实现系统的多样性扩展或者切换。

2。 隔离实现的变动,对接口部分的影响。

3。 横向切分一个类接口,或者分2部分实现,使用聚合技术(aggregation)来共享某些实现。

实际应用中,第三种情景应用较多,还有另一种应用,就是在STL的functor中,为了避免C++的多态开销,使用此模式来使类的多态横向到具体实现,而接口类没有虚函数指针.也就是下面Target类的两个virtual都可以去掉,但还是具备多态的能力.

// Bridge.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include 
using namespace std;//Implementorclass Implementor{public: virtual void Method() = 0;};//consumerclass Target{ virtual Implementor* GetImp() = 0;public: virtual void Method(){ GetImp()->Method(); }};//Concret implementation 1class ImplemetorConcret1 : public Implementor{public: virtual void Method(){ cout << "This is concret implementation1." << endl; }};//Concret implementation 2class ImplemetorConcret2 : public Implementor{public: virtual void Method(){ cout << "This is concret implementation2." << endl; }};//Concret Consumer..class TargetConcret : public Target{ int _type;public: TargetConcret(int type):_type(type){}private: //Include multiple implementation in one virtual Implementor* GetImp(){ Implementor* imp = NULL; if(_type == 0) imp = new ImplemetorConcret1(); else imp = new ImplemetorConcret2(); return imp; }};int main(int argc, char* argv[]){ TargetConcret target(0); target.Method(); TargetConcret target1(2); target1.Method(); return 0;}

转载于:https://my.oschina.net/zhujinbao/blog/223725

你可能感兴趣的文章
在 HAproxy 1.5 中使用 SSL 证书 【已翻译100%】(2/2)
查看>>
《FLUENT 14流场分析自学手册》——第1章 流体力学基础 1.1 流体力学基本概念
查看>>
CAAI演讲实录丨李德毅院士:交互认知——从图灵测试的漏洞谈开去
查看>>
《Java入门经典(第7版)》—— 导读
查看>>
《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.2 基本光照效果
查看>>
在Ubuntu中安装XScreenSaver
查看>>
《HTML5 2D游戏编程核心技术》——第3章,第3.9节使用视差产生视深的假象
查看>>
Practical Clojure - 简介
查看>>
Django 博客开发教程 4 - 让 Django 完成翻译:迁移数据库
查看>>
《Python密码学编程》——2.7 在线跟踪程序
查看>>
雾里看花之 Python Asyncio
查看>>
Velocity官方指南-使用Velocity
查看>>
jQuery获取数组对象的值
查看>>
Android+struts2+json方式模拟手机登录功能
查看>>
批量生成 htpasswd 密码
查看>>
大型网站技术架构之秒杀系统架构设计
查看>>
一、大型网站技术架构演化
查看>>
NVIDIA Jetson TK1学习与开发(十):人脸检测(Face Detection)
查看>>
PHP读取日志里数据方法理解
查看>>
#大学#汇编指令查询
查看>>