适配器模式的极简概述

刚简单并认真地看了适配器模式,赶紧把其原理勾勒出来,防止忘光光。

若A的Do无法直接使用C的方法DoC,构件适配器B。注意以下要点:

1.B继承自A,写覆盖函数Do(目的是调用B的方法);

2.B以C的对象c为构造函数的输入;

3.B的Do函数中使c调用DoC;

4.C c = new C;A a = new B(c);a->Do;

此时,执行的是B的Do,从而调用了DoC。给出编译通过的源码

 

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;


class A
{
public:
	virtual ~A()
	{
	};
	virtual void Do()
	{
		cout << "Do By A;" << endl;
	};
};


class C
{
public:
	void DoC()
	{
		cout<<"Do By C;" << endl;
	}
};


class B : public A
{
public:
	B(C* c_In):c(c_In) {};
	virtual ~B() {};
	virtual void Do()
	{
		cout << "Transfer By Adapter;" << endl;
		c->DoC();
	}


private:
	C* c;
};


void main()
{
	C *c = new C;
	A *a = new B(c);
	a->Do();


	delete c;
	delete a;


	system("pause");
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值