11Bridge桥梁模式.docx

上传人:b****1 文档编号:2412448 上传时间:2022-10-29 格式:DOCX 页数:7 大小:41.44KB
下载 相关 举报
11Bridge桥梁模式.docx_第1页
第1页 / 共7页
11Bridge桥梁模式.docx_第2页
第2页 / 共7页
11Bridge桥梁模式.docx_第3页
第3页 / 共7页
11Bridge桥梁模式.docx_第4页
第4页 / 共7页
11Bridge桥梁模式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

11Bridge桥梁模式.docx

《11Bridge桥梁模式.docx》由会员分享,可在线阅读,更多相关《11Bridge桥梁模式.docx(7页珍藏版)》请在冰豆网上搜索。

11Bridge桥梁模式.docx

11Bridge桥梁模式

桥梁模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。

实现分离的办法就是增加一个类,

11.1.解释

main(),客户

IProduct,产品接口

CHouse,房子

CIPod,ipod

CClothes,服装

CNewCorp,桥梁类,MakeMoney()是桥梁方法

CNewHouseCorp,只能生产房子,所以构造函数是CHouse*

CShanZhaiCorp,什么赚钱就生产什么,所以构造函数是IProduct*

说明:

客户直接使用CNewHouseCorp和CShanZhaiCorp类,在main()函数里构造产品,然后传到这两个类里。

这两个类的MakeMoney()函数,先调用基类的MakeMoney(),然后分别执行各自的逻辑。

注意:

CNewCorp起到了桥梁的作用。

可以分别增加产品和公司。

看代码:

//NewCorp.h

#pragmaonce

#include"IProduct.h"

classCNewCorp

{

public:

   CNewCorp(IProduct*pproduct);

   virtual~CNewCorp(void);

   voidMakeMoney();

private:

   IProduct*m_pProduct;

};

//NewCorp.cpp

#include"StdAfx.h"

#include"NewCorp.h"

CNewCorp:

:

CNewCorp(IProduct*pproduct)

{

   this->m_pProduct=pproduct;

}

CNewCorp:

:

~CNewCorp(void)

{

}

voidCNewCorp:

:

MakeMoney()

{

   //每个公司都是一样,先生产

   this->m_pProduct->BeProducted();

   //然后销售

   this->m_pProduct->BeSelled();

}

//NewHouseCorp.h

#pragmaonce

#include"newcorp.h"

#include"House.h"

classCNewHouseCorp:

   publicCNewCorp

{

public:

   CNewHouseCorp(CHouse*pHouse);

   ~CNewHouseCorp(void);

   voidMakeMoney();

};

//NewHouseCorp.cpp

#include"StdAfx.h"

#include"NewHouseCorp.h"

#include

usingstd:

:

cout;

usingstd:

:

endl;

CNewHouseCorp:

:

CNewHouseCorp(CHouse*pHouse):

CNewCorp(pHouse)

{

}

CNewHouseCorp:

:

~CNewHouseCorp(void)

{

}

voidCNewHouseCorp:

:

MakeMoney()

{

   this->CNewCorp:

:

MakeMoney();

   cout<<"房地产公司赚大钱了..."<

}

//ShanZhaiCorp.h

#pragmaonce

#include"newcorp.h"

#include"IProduct.h"

classCShanZhaiCorp:

   publicCNewCorp

{

public:

   CShanZhaiCorp(IProduct*pproduct);

   ~CShanZhaiCorp(void);

   voidMakeMoney();

};

//ShanZhaiCorp.cpp

#include"StdAfx.h"

#include"ShanZhaiCorp.h"

#include

usingstd:

:

cout;

usingstd:

:

endl;

CShanZhaiCorp:

:

CShanZhaiCorp(IProduct*pproduct):

CNewCorp(pproduct)

{

}

CShanZhaiCorp:

:

~CShanZhaiCorp(void)

{

}

voidCShanZhaiCorp:

:

MakeMoney()

{

   this->CNewCorp:

:

MakeMoney();

   cout<<"我赚钱呀..."<

}

//IProduct.h

#pragmaonce

classIProduct

{

public:

   IProduct(void)

   {

   }

   virtual~IProduct(void)

   {

   }

   virtualvoidBeProducted()=0;

   virtualvoidBeSelled()=0;

};

//House.h

#pragmaonce

#include"iproduct.h"

classCHouse:

   publicIProduct

{

public:

   CHouse(void);

   ~CHouse(void);

   voidBeProducted();

   voidBeSelled();

};

//House.cpp

#include"StdAfx.h"

#include"House.h"

#include

usingstd:

:

cout;

usingstd:

:

endl;

CHouse:

:

CHouse(void)

{

}

CHouse:

:

~CHouse(void)

{

}

voidCHouse:

:

BeProducted()

{

   cout<<"生产出的房子是这个样子的..."<

}

voidCHouse:

:

BeSelled()

{

   cout<<"生产出的房子卖出去了..."<

}

//Clothes.h

#pragmaonce

#include"iproduct.h"

classCClothes:

   publicIProduct

{

public:

   CClothes(void);

   ~CClothes(void);

   voidBeProducted();

   voidBeSelled();

};

//Clothes.cpp

#include"StdAfx.h"

#include"Clothes.h"

#include

usingstd:

:

cout;

usingstd:

:

endl;

CClothes:

:

CClothes(void)

{

}

CClothes:

:

~CClothes(void)

{

}

voidCClothes:

:

BeProducted()

{

   cout<<"生产出的衣服是这个样子的..."<

}

voidCClothes:

:

BeSelled()

{

   cout<<"生产出的衣服卖出去了..."<

}

//IPod.h

#pragmaonce

#include"iproduct.h"

classCIPod:

   publicIProduct

{

public:

   CIPod(void);

   ~CIPod(void);

   voidBeProducted();

   voidBeSelled();

};

//IPod.cpp

#include"StdAfx.h"

#include"IPod.h"

#include

usingstd:

:

cout;

usingstd:

:

endl;

CIPod:

:

CIPod(void)

{

}

CIPod:

:

~CIPod(void)

{

}

voidCIPod:

:

BeProducted()

{

   cout<<"生产出的ipod是这个样子的..."<

}

voidCIPod:

:

BeSelled()

{

   cout<<"生产出的ipod卖出去了..."<

}

//

//Bridge.cpp:

定义控制台应用程序的入口点。

//

#include"stdafx.h"

#include"ClothesCorp.h"

#include"NewHouseCorp.h"

#include"Clothes.h"

#include"IPod.h"

#include"ShanZhaiCorp.h"

#include

usingstd:

:

cout;

usingstd:

:

endl;

voidDoNewRun1()

{

   cout<<"----------房地产公司是这样运行的----------"<

   CHousehouse;

   CNewHouseCorpnewHouseCorp(&house);

   newHouseCorp.MakeMoney();

   cout<

   cout<<"----------山寨公司是这样运行的----------"<

   CClothesclothes;

   CShanZhaiCorpshanZhaiCorp(&clothes);

   shanZhaiCorp.MakeMoney();

   cout<

}

voidDoNewRun2()

{

   cout<<"----------房地产公司是这样运行的----------"<

   CHousehouse;

   CNewHouseCorpnewHouseCorp(&house);

   newHouseCorp.MakeMoney();

   cout<

   cout<<"----------山寨公司是这样运行的----------"<

   CIPodipod;

   CShanZhaiCorpshanZhaiCorp(&ipod);

   shanZhaiCorp.MakeMoney();

   cout<

}

int_tmain(intargc,_TCHAR*argv[])

{

   //只有两家公司,一家是房地产公司,另一家公司是衣服赚钱就生产衣服

   DoNewRun1();

   //只有两家公司,一家是房地产公司,另一家公司是ipod赚钱就生产ipod

   DoNewRun2();

   _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF);

   _CrtDumpMemoryLeaks

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1