Adapt模式C++实现

作用:

将一个类的接口转换成客户希望的另外一个接口。Adapt 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。



UML示意图

1)采用继承原有接口类的方式

Adapt模式C++实现

2)采用组合原有接口类的方式

Adapt模式C++实现

解析:

Adapt模式其实就是把完成同样的一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,这个模式使得复用旧的接口成为可能.





实现:

Adapt模式有两种实现办法,一种是采用继承原有接口类的方法,一种是采用组合原有接口类的方法,这里采用的是第二种实现方法.



1)Adapt.h


Adapt模式C++实现Adapt模式C++实现/*********

Adapt模式C++实现 created: 2006/07/20

Adapt模式C++实现 filename: Adapter.h

Adapt模式C++实现 author: 李创

Adapt模式C++实现http://www.cppblog.com/converse/

Adapt模式C++实现

Adapt模式C++实现 purpose: Adapter模式的演示代码

Adapt模式C++实现
**********/

Adapt模式C++实现

Adapt模式C++实现#ifndef ADAPTER_H

Adapt模式C++实现
#defineADAPTER_H

Adapt模式C++实现

Adapt模式C++实现
//需要被Adapt的类

Adapt模式C++实现
classTarget

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现
public:

Adapt模式C++实现Adapt模式C++实现 Target()
{}

Adapt模式C++实现Adapt模式C++实现
virtual~Target(){}

Adapt模式C++实现

Adapt模式C++实现
virtualvoidRequest()=0;

Adapt模式C++实现}
;

Adapt模式C++实现

Adapt模式C++实现
//与被Adapt对象提供不兼容接口的类

Adapt模式C++实现
classAdaptee

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现
public:

Adapt模式C++实现Adapt模式C++实现 Adaptee()
{}

Adapt模式C++实现Adapt模式C++实现
~Adaptee(){}

Adapt模式C++实现
voidSpecialRequest();

Adapt模式C++实现}
;

Adapt模式C++实现

Adapt模式C++实现
//进行Adapt的类,采用聚合原有接口类的方式

Adapt模式C++实现
classAdapter

Adapt模式C++实现 :
publicTarget

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现
public:

Adapt模式C++实现 Adapter(Adaptee
pAdaptee);

Adapt模式C++实现
virtual~Adapter();

Adapt模式C++实现

Adapt模式C++实现
virtualvoidRequest();

Adapt模式C++实现

Adapt模式C++实现
private:

Adapt模式C++实现 Adaptee
m_pAdptee;

Adapt模式C++实现}
;

Adapt模式C++实现

Adapt模式C++实现
#endif


2)Adapt.cpp


Adapt模式C++实现Adapt模式C++实现
//*********

Adapt模式C++实现 created: 2006/07/20

Adapt模式C++实现 filename: Adapter.cpp

Adapt模式C++实现 author: 李创

Adapt模式C++实现
http://www.cppblog.com/converse/

Adapt模式C++实现

Adapt模式C++实现 purpose: Adapter模式的演示代码

Adapt模式C++实现
*********/

Adapt模式C++实现

Adapt模式C++实现#include
"Adapter.h"

Adapt模式C++实现#include
<iostream>

Adapt模式C++实现

Adapt模式C++实现
voidAdaptee::SpecialRequest()

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现 std::cout
<<"SpecialRequest of Adaptee\n";

Adapt模式C++实现}


Adapt模式C++实现

Adapt模式C++实现Adapter::Adapter(Adaptee
pAdaptee)

Adapt模式C++实现 : m_pAdptee(pAdaptee)

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现

Adapt模式C++实现}


Adapt模式C++实现

Adapt模式C++实现Adapter::
~Adapter()

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现 delete m_pAdptee;

Adapt模式C++实现 m_pAdptee
=NULL;

Adapt模式C++实现}


Adapt模式C++实现

Adapt模式C++实现
voidAdapter::Request()

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现 std::cout
<<"Request of Adapter\n";

Adapt模式C++实现

Adapt模式C++实现 m_pAdptee
->SpecialRequest();

Adapt模式C++实现}



3)Main.cpp


Adapt模式C++实现Adapt模式C++实现
//
*********

Adapt模式C++实现 created: 2006/07/20

Adapt模式C++实现 filename: Main.cpp

Adapt模式C++实现 author: 李创

Adapt模式C++实现http://www.cppblog.com/converse/

Adapt模式C++实现

Adapt模式C++实现 purpose: Adapter模式的测试代码

Adapt模式C++实现
**********/

Adapt模式C++实现

Adapt模式C++实现#include
"Adapter.h"

Adapt模式C++实现#include
<stdlib.h>

Adapt模式C++实现

Adapt模式C++实现
intmain()

Adapt模式C++实现Adapt模式C++实现
{

Adapt模式C++实现 Adaptee
pAdaptee=newAdaptee;

Adapt模式C++实现 Target
pTarget=newAdapter(pAdaptee);

Adapt模式C++实现 pTarget
->Request();

Adapt模式C++实现

Adapt模式C++实现 delete pTarget;

Adapt模式C++实现

Adapt模式C++实现 system(
"pause");

Adapt模式C++实现

Adapt模式C++实现
return0;

Adapt模式C++实现}

原文链接: https://www.cnblogs.com/weiqubo/archive/2011/01/09/1931462.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/19860

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午9:12
下一篇 2023年2月7日 下午9:12

相关推荐