您的位置:首页 > 其它

设计模式-结构型01-适配器

2014-01-02 22:14 253 查看
一,结构型模式

描叙如何将类或对象结合在一起形成更大的结构。

结构模式可以描叙两种不同的东西:

1,类结构型。关心类的组合,由多个类可以组成更大的系统,一般只存在继承实现关系。

2,对象结构型。关心类与对象的组合,通过关联关系使得在一个类中定义另一个对象类的实例。

二,动机

在现实生活中,经常存在一些不兼容的事物。最常见的是电源适配器。例如手机充电需要的电压大概是4.2伏特,但是国家电网提供的都是220伏特的电压。为了能兼容,我们引入了变压器,也就是适配器来解决这个问题。

三,定义

将一个接口转化成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。

四,模式结构

类适配器:





对象适配器:





1,Target(目标类)

客户需要的接口类。

2,Adapter(适配器类)

适配器类可以调用另一个接口,作为一个转换器。

3,Adaptee(适配者类)

即被适配的类,它定义了一个已经存在的接口,这个接口需要适配。

五,实例代码

类适配器:

#include <iostream>

using namespace std;

class Robot
{
public:
virtual void Say() = 0;
virtual void Dance() = 0;
};
class Cat
{
public:
void Bark()
{
cout<<"喵..喵"<<endl;
}
void run()
{
cout<<"咚..咚"<<endl ;
}
};

class RobotCat1:public Robot,Cat
{
public:
void Say()
{
cout<<"大雄你好:"<<endl;
Bark();
}
void Dance()
{
cout<<"俺给你来段肚皮舞"<<endl;
run();
}
};
int main()
{
Robot* test_cat = new RobotCat1();
test_cat->Say();
cout<<"-------------------------------"<<endl;
test_cat->Dance();

return 0;
}
对象适配器:

不同于类适配器的是,

class RobotCat2:public Robot
{
private:
Cat cat;
public:
void Say()
{
cout<<"大雄你好:"<<endl;
cat.Bark();
}
void Dance()
{
cout<<"俺给你来段肚皮舞"<<endl;
cat.run();
}
};


六,拓展

双向适配器

狼和羊的爱情故事--双向适配器
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: