模式七:适配器模式(Adapter pattern)——接口转换
2016-10-17 21:02
519 查看
适配器模式
将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。应用分析
主要功能是完成接口转换,通过适配器,将被适配者的接口转换成满足客户需求的接口。客户使用适配器的过程如下:
客户通过目标接口调用适配器的方法对适配器发出请求;
适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口;
客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。
适配器接口分为:对象适配器接口和类适配器接口。
对象适配器——通过组合或委托被适配者实现
类适配器——通过继承被适配者实现
代码分析
//Adapter.h#ifndef ADAPTER_H
#define ADAPTER_H
#include <iostream>
class Duck//鸭子抽象类
{
public:
virtual void quack()=0;
virtual void fly()=0;
};
class Turkey//火鸡抽象类
{
public:
virtual void gobble()=0;
virtual void tfly()=0;
};
class MallardDuck:public Duck//鸭子实体类
{
public:
void quack()
{
std::cout<<"Duck Quack"<<std::endl;
}
void fly()
{
std::cout<<"Duck Fly"<<std::endl;
}
};
class WildTurkey:public Turkey//火鸡实体类
{
public:
void gobble()
{
std::cout<<"Turkey gobble"<<std::endl;
}
void tfly()
{
std::cout<<"Turkey Fly"<<std::endl;
}
};
class TurkeyObjectAdapter:public Duck//对象适配器
{
private:
Turkey *t;
public:
TurkeyObjectAdapter(Turkey *t)
{
this->t=t;
}
void quack()
{
t->gobble();
}
void fly()
{
t->tfly();
}
};
class TurkeyClassAdapter:public Duck,private WildTurkey//类适配器
{
public:
void quack()
{
this->gobble();
}
void fly()
{
this->tfly();
}
};
#endif
//Main.cpp
//测试程序
#include "Adapter.h"
void print_Duck(Duck *d)
{
d->quack();
d->fly();
}
int main()
{
Duck *d=new MallardDuck();//定义鸭子对象
print_Duck(d);
Turkey *t=new WildTurkey();//定义火鸡对象
Duck *ob_t=new TurkeyObjectAdapter(t);//对象适配器
print_Duck(ob_t);
Duck *cl_t=new TurkeyClassAdapter();//类适配器
print_Duck(cl_t);
return 0;
}
相关文章推荐
- 设计模式学习笔记十一:适配器模式(Adapter Pattern)
- 设计模式6:Adapter Pattern (适配器模式)
- 设计模式笔记之适配器模式(Adapter Pattern)
- C#面向对象设计模式第七讲:Adapter Pattern 适配器模式(结构型模式)
- 极速理解设计模式系列:6.适配器模式(Adapter Pattern)
- .NET设计模式-适配器模式(Adapter Pattern)
- 设计模式 - Adapter Pattern(适配器模式)
- .NET设计模式-适配器模式(Adapter Pattern)
- 解读设计模式----适配器模式(Adapter Pattern)
- .NET设计模式(8):适配器模式(Adapter Pattern)
- .NET设计模式(8):适配器模式(Adapter Pattern)
- (第Ⅲ部分 结构型模式篇) 第7章 适配器模式(Adapter Pattern)
- 适配器模式(adapter pattern)(插座转换)
- .Net设计模式 Adapter 适配器模式(结构型模式)Adapter Pattern
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
- .NET设计模式(8):适配器模式(Adapter Pattern)
- 设计模式——适配器模式【Adapter Pattern】
- 设计模式学习笔记(3)——适配器模式(Adapter Pattern)
- .NET设计模式(8):适配器模式(Adapter Pattern)
- 极速理解设计模式系列:6.适配器模式(Adapter Pattern)