设计模式(三) 适配器模式 c++实现

聊聊适配器模式

适配器,它是一个接口转换器,它可以是一个独立的硬件接口设备,允许硬件或电子接口与其它硬件或电子接口相连,也可以是信息接口。比如:电源适配器、三角架基座转接部件、USB与串口的转接设备等。功率转换器不知道大家熟悉不,在武汉上大学的我,大一开始寝室限功率350w,相当于所有大功率用电器都不能用,每次洗完头发的女生内心想必是崩溃的,有些寝室就会用功率转换器,把大功率的吹风机转成小功率。,其实功率转换器也是充当着适配器的角色。
那么设计模式里面的适配器模式也是同样的道理,适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。

适配器模式有类适配器和对象适配器两种模式

类适配器

我们拿刚刚那个功率转换器来举例子

角色(吹风机),这是我们直接拿在手上使用的工具

class blower
{
public:
    // 功率500w的吹风机  
    virtual void BlowHair(){};  
};

现在我们假设转换器可以把这个吹风机转成一个虚拟的吹风机,YY一下,是不是挺形象的 ,他的功率低于350w。

class Inveblower
{
public:
    // 功率350w的虚拟吹风机  
    virtual void SpeciaclBlowHair(){};  
};

转换器类

class Converter : public Inveblower, public blower
{
public:
    void BlowHair()
    {
        this->SpeciaclBlowHair()
    }
};

主函数

int main()
{
    blower* T = new Converter();//多态  
    T->BlowHair();  
    return 0;  
}

理解一下是不是起到转换器的功能,对于我们 来说我们只能拿到吹风机类,它具有吹头发的功能,但是它的功率较大,而对于那个虚拟的吹风机我们用不了,因为不知道怎么启动,现在有一个中间角色他是跟吹风机相关,当我们使用吹风机的时候,接上它,启动吹发按钮(函数),由于多态调用的是这个转换器的吹发功能,而他的内部调用的就是那个虚拟的吹风机的吹发功能,是不是很形象(我这脑洞没谁了)

对象适配器

其实类的适配器跟对象适配器一个意思,理解上差不多,下面我给出代码,相信大家一看就懂

class blower
{
public:
    // 功率500w的吹风机  
    virtual void BlowHair(){};  
};

class Inveblower
{
public:
    // 功率350w的虚拟吹风机  
    virtual void SpeciaclBlowHair(){};  
};

class Converter :public blower
{
public:
    Inveblower* pSInveblower;
    Converter() {
        pSInveblower = new Inveblower();
    }
    void BlowHair()
    {
        pSInveblower->SpeciaclBlowHair()
    }
};


int main()
{
    blower* T = new Converter();//多态  
    T->BlowHair();  
    return 0;  
}

适配器模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。

我理解的适配器模式已经介绍完毕,欢迎大家跟我交流!

猜你喜欢

转载自blog.csdn.net/breakpoints_/article/details/80136354