设计模式-适配器模式

适配器模式:将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。
这里写图片描述
模式比较简单,直接贴代码:

#ifndef Duck_h
#define Duck_h
#include <iostream>
class Duck {
public:
    virtual void quack()=0;
};

class MallardDuck:public Duck{
public:
    void quack(){
        printf("MallardDuck Quack\n");
    }
};
#endif /* Duck_h */
#ifndef Turkey_h
#define Turkey_h
#include <iostream>
class Turkey{
public:
    //火鸡不能呱呱叫,只能咯咯叫
    void gobble(){
        printf("Turkey Gobble\n");
    }
};
#endif /* Turkey_h */
#ifndef TurkeyAdapter_h
#define TurkeyAdapter_h
#include "Duck.h"
#include "Turkey.h"
class TurkeyAdapter:public Duck{
private:
    Turkey* turkey;
public:
    TurkeyAdapter(Turkey* turkey){
        this->turkey = turkey;
    }
    void quack(){
        turkey->gobble();
    }
};

#endif /* TurkeyAdapter_h */
#include <iostream>
#include "Duck.h"
#include "Turkey.h"
#include "TurkeyAdapter.h"
void testQuack(Duck* duck);
int main(int argc, const char * argv[]) {
    auto duck = new MallardDuck();
    auto turkey = new Turkey();
    auto turkeyAdapter = new TurkeyAdapter(turkey);

    testQuack(duck);
    testQuack(turkeyAdapter);//使用适配器使火鸡兼容Duck*参数
    return 0;
}
void testQuack(Duck* duck){//客户只接受Duck*类型
    duck->quack();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值