青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

那誰的技術(shù)博客

感興趣領(lǐng)域:高性能服務(wù)器編程,存儲,算法,Linux內(nèi)核
隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
數(shù)據(jù)加載中……

常見設(shè)計模式的解析和實現(xiàn)(C++)之七-Bridge模式

作用:
將抽象部分與它的實現(xiàn)部分分離,使它們都可以獨立地變化。

UML結(jié)構(gòu)圖:


抽象基類:
1)Abstraction:某個抽象類,它的實現(xiàn)方式由Implementor完成.
2)Implementor:實現(xiàn)類的抽象基類,定義了實現(xiàn)Abastraction的基本操作,而它的派生類實現(xiàn)這些接口.

接口函數(shù):
1)Implementor::OperationImpl:定義了為實現(xiàn)Abstraction需要的基本操作,由Implementor的派生類實現(xiàn)之,而在Abstraction::Operation函數(shù)中根據(jù)不同的指針多態(tài)調(diào)用這個函數(shù).

解析:
Bridge用于將表示和實現(xiàn)解耦,兩者可以獨立的變化.在Abstraction類中維護(hù)一個Implementor類指針,需要采用不同的實現(xiàn)方式的時候只需要傳入不同的Implementor派生類就可以了.

Bridge的實現(xiàn)方式其實和Builde十分的相近,可以這么說:本質(zhì)上是一樣的,只是封裝的東西不一樣罷了.兩者的實現(xiàn)都有如下的共同點:抽象出來一個基類,這個基類里面定義了共有的一些行為,形成接口函數(shù)(對接口編程而不是對實現(xiàn)編程),這個接口函數(shù)在Buildier中是BuildePart函數(shù)在Bridge中是OperationImpl函數(shù);其次,聚合一個基類的指針,如Builder模式中Director類聚合了一個Builder基類的指針,而Brige模式中Abstraction類聚合了一個Implementor基類的指針(優(yōu)先采用聚合而不是繼承);而在使用的時候,都把對這個類的使用封裝在一個函數(shù)中,在Bridge中是封裝在Director::Construct函數(shù)中,因為裝配不同部分的過程是一致的,而在Bridge模式中則是封裝在Abstraction::Operation函數(shù)中,在這個函數(shù)中調(diào)用對應(yīng)的Implementor::OperationImpl函數(shù).就兩個模式而言,Builder封裝了不同的生成組成部分的方式,而Bridge封裝了不同的實現(xiàn)方式.

因此,如果以一些最基本的面向?qū)ο蟮脑O(shè)計原則來分析這些模式的實現(xiàn)的話,還是可以看到很多共同的地方的.

實現(xiàn):
1)Bridge.h
/********************************************************************
????created:????2006/07/20
????filename:?????Brige.h
????author:????????李創(chuàng)
????????????????
http://m.shnenglu.com/converse/

????purpose:????Brige模式的演示代碼
********************************************************************
*/


#ifndef?BRIDEG_H
#define?BRIDEG_H

class?Implementor;

//?維護(hù)一個Implementor類的指針
class?Abstraction
{
public:
????Abstraction(Implementor
*?pImplementor);
????
virtual?~Abstraction();

????
void?Operation();

protected:
????Implementor
*?m_pImplementor;
}
;

//?為實現(xiàn)Abstraction定義的抽象基類,定義了實現(xiàn)的接口函數(shù)
class?Implementor
{
public:
????Implementor()
{}
????
virtual?~Implementor(){}

????
virtual?void?OperationImpl()?=?0;
}
;

//?繼承自Implementor,是Implementor的不同實現(xiàn)之一
class?ConcreateImplementorA
????:?
public?Implementor
{
public:
????ConcreateImplementorA()
{}
????
virtual?~ConcreateImplementorA(){}

????
virtual?void?OperationImpl();
}
;

//?繼承自Implementor,是Implementor的不同實現(xiàn)之一
class?ConcreateImplementorB
????:?
public?Implementor
{
public:
????ConcreateImplementorB()
{}
????
virtual?~ConcreateImplementorB(){}

????
virtual?void?OperationImpl();
}
;

#endif

2)Bridge.cpp
/********************************************************************
????created:????2006/07/20
????filename:?????Brige.cpp
????author:????????李創(chuàng)
????????????????
http://m.shnenglu.com/converse/

????purpose:????Brige模式的演示代碼
********************************************************************
*/


#include?
"Brige.h"
#include?
<iostream>

void?ConcreateImplementorA::OperationImpl()
{
????std::cout?
<<?"Implementation?by?ConcreateImplementorA\n";
}


void?ConcreateImplementorB::OperationImpl()
{
????std::cout?
<<?"Implementation?by?ConcreateImplementorB\n";
}


Abstraction::Abstraction(Implementor
*?pImplementor)
????:?m_pImplementor(pImplementor)
{
}


Abstraction::
~Abstraction()
{
????delete?m_pImplementor;
????m_pImplementor?
=?NULL;
}


void?Abstraction::Operation()
{
????m_pImplementor
->OperationImpl();
}

3)Main.cpp
/********************************************************************
????created:????2006/07/20
????filename:?????Main.cpp
????author:????????李創(chuàng)
????????????????
http://m.shnenglu.com/converse/

????purpose:????Bridge模式的測試代碼
********************************************************************
*/


#include?
"Brige.h"
#include?
<stdlib.h>

int?main()
{
????ConcreateImplementorA?
*pImplA?=?new?ConcreateImplementorA();
????Abstraction?
*pAbstraction1?=?new?Abstraction(pImplA);
????pAbstraction1
->Operation();

????ConcreateImplementorB?
*pImplB?=?new?ConcreateImplementorB();
????Abstraction?
*pAbstraction2?=?new?Abstraction(pImplB);
????pAbstraction2
->Operation();

????delete?pAbstraction1;
????delete?pAbstraction2;

????system(
"pause");

????
return?0;
}

posted on 2006-07-23 21:01 那誰 閱讀(3932) 評論(2)  編輯 收藏 引用 所屬分類: 設(shè)計模式

評論

# re: 常見設(shè)計模式的解析和實現(xiàn)(C++)之七-Bridge模式   回復(fù)  更多評論   

Abstraction::~Abstraction()
{
delete m_pImplementor;
m_pImplementor = NULL;
}

我覺得這里不應(yīng)該delete pImplementor,delete的操作應(yīng)該由客戶端代碼來完成更加合理一些。
2009-02-05 20:41 | 孤煙

# re: 常見設(shè)計模式的解析和實現(xiàn)(C++)之七-Bridge模式 [未登錄]  回復(fù)  更多評論   

我也是這么覺得,誰new的就讓誰delete
2010-05-27 14:26 | dd
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产综合精品| 一区二区三区高清| 黑丝一区二区三区| 欧美日韩三级| 欧美一级一区| 亚洲免费av观看| 亚洲高清视频在线| 久久久久在线观看| 亚洲国产成人av在线| 欧美另类videos死尸| 欧美成人官网二区| 欧美经典一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 久久国产精品一区二区三区四区| 羞羞答答国产精品www一本| 亚洲一区成人| 亚洲一区二区三区精品在线 | 久久久久久黄| 久久婷婷一区| 国产一区91精品张津瑜| 久久se精品一区精品二区| 欧美怡红院视频| 亚洲日本视频| 亚洲香蕉视频| 欧美一区二区三区在线观看| 夜夜嗨av一区二区三区中文字幕| 亚洲婷婷在线| 久久精品日韩欧美| 玖玖视频精品| 欧美乱妇高清无乱码| 欧美午夜国产| 激情成人亚洲| 日韩亚洲欧美成人| 午夜精品婷婷| 久久在线免费观看| 91久久香蕉国产日韩欧美9色| 日韩视频在线免费| 美国十次了思思久久精品导航| 亚洲国产成人在线播放| 一本一道久久综合狠狠老精东影业| 亚洲尤物视频网| 久久中文字幕一区二区三区| 欧美日韩在线看| 国产婷婷色一区二区三区在线 | 午夜精品福利视频| 久久国产手机看片| 欧美日韩国产精品一区二区亚洲| 国产精品永久免费在线| 亚洲欧洲精品一区二区| 亚洲一区二区黄| 亚洲尤物在线| 亚洲观看高清完整版在线观看| 一区二区三区高清在线 | 性久久久久久| 午夜久久福利| 亚洲在线一区二区三区| 久久精品最新地址| 久久偷窥视频| 在线一区二区三区四区| 亚洲手机视频| 亚洲综合国产| 欧美日韩国产小视频在线观看| 国产欧美日韩免费| 亚洲午夜久久久久久久久电影院| 免费的成人av| 久久成人久久爱| 国产精品捆绑调教| 夜夜精品视频| 亚洲国产日韩在线| 久久久久国产精品麻豆ai换脸| 国产精品女主播| 国产精品chinese| 最新国产成人在线观看| 久久男人资源视频| 午夜在线电影亚洲一区| 国产精品免费在线| 亚洲人线精品午夜| 欧美激情乱人伦| 两个人的视频www国产精品| 狠狠色2019综合网| 亚洲女女做受ⅹxx高潮| 亚洲狼人综合| 久久乐国产精品| 韩国v欧美v日本v亚洲v| 久久久国产视频91| 久久xxxx精品视频| 国内精品伊人久久久久av影院| 午夜视频久久久| 亚洲欧美日韩国产成人| 国产伦精品一区二区三区四区免费 | 欧美日韩日日骚| 一本到高清视频免费精品| 亚洲黄色影院| 欧美激情亚洲| 亚洲素人一区二区| 亚洲一区二区三区欧美| 国产精品女人毛片| 久久精品亚洲一区二区三区浴池| 日韩一级大片在线| 欧美**字幕| 一区二区三区视频免费在线观看| 日韩午夜av在线| 国产精品毛片在线看| 久久精品人人爽| 免费试看一区| 亚洲男人的天堂在线aⅴ视频| 亚洲欧美国产精品桃花| 国内精品久久久久伊人av| 国产精品三级视频| 久久久久久9| 欧美激情在线观看| 欧美一区二区三区成人| 老司机精品视频网站| 一区二区三区成人| 欧美在线一二三区| 一本色道久久88亚洲综合88| 亚洲一区免费看| 亚洲日本国产| 香蕉成人久久| 在线中文字幕日韩| 久久精品人人做人人爽| 极品尤物一区二区三区| 老司机aⅴ在线精品导航| 欧美日韩国产美| 麻豆精品视频在线观看| 欧美视频日韩| 一本色道久久综合一区| 亚洲欧美中文字幕| 日韩一区二区久久| 久久国产精品久久久久久电车| 一本大道久久a久久精二百| 久久不射中文字幕| 亚洲欧美成人在线| 男女激情久久| 久久久久久精| 国产精品久久9| 亚洲国产aⅴ天堂久久| 欧美日韩福利在线观看| 亚洲一区二区三区高清不卡| 久久精品在线视频| 久久精品国产精品亚洲精品| 欧美精品九九| 亚洲国产综合在线| 亚洲第一黄色网| 欧美一级视频精品观看| 亚洲视频在线观看三级| 欧美大片在线观看一区二区| 麻豆成人精品| 在线观看日韩国产| 久久精品在线观看| 久久久久久久一区二区三区| 欧美 日韩 国产精品免费观看| 亚洲国产免费| 欧美一区二区精品在线| 欧美亚洲一级| 国产精品视频xxx| 亚洲一区在线免费| 亚洲综合色丁香婷婷六月图片| 欧美久久成人| 99pao成人国产永久免费视频| 99这里有精品| 欧美日韩精品一区二区三区四区| 亚洲国产天堂久久国产91| 亚洲欧洲精品一区二区三区不卡 | 久久久久国产精品厨房| 久久久久五月天| 红桃视频欧美| 久久久久久久久久久一区| 久久阴道视频| 中文一区在线| 精品999在线播放| 欧美少妇一区二区| 久久久伊人欧美| 中文在线资源观看网站视频免费不卡 | 国产精品久久久久久久久免费桃花 | 亚洲美女黄网| 国产视频一区在线| 欧美日韩亚洲一区二区三区在线| 欧美一区二区三区电影在线观看| 欧美成人免费观看| 午夜精品久久久久久久99水蜜桃| 激情婷婷亚洲| 国产精品热久久久久夜色精品三区| 另类综合日韩欧美亚洲| 亚洲专区在线视频| 亚洲乱亚洲高清| 亚洲二区在线视频| 中日韩男男gay无套| 国产一区二区三区黄| 欧美日韩一区二区三| 久久久久国产免费免费| 一区二区动漫| 亚洲精品欧美| 亚洲国产片色| 老鸭窝毛片一区二区三区| 欧美在线一区二区| 亚洲欧美另类在线| 一区二区三区精密机械公司| 亚洲人成啪啪网站| 亚洲国产精品成人精品|