首页 > 其他 > 详细

适配器模式,换个包装再度利用 Adapter

时间:2014-03-20 11:22:10      阅读:436      评论:0      收藏:0      [点我收藏+]
// example10.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "string.h"

//假设现在已经有一个类,已经实现了一些功能,并且该类经过测试已经十分稳定。

//计算阶乘 n!
class  Factorial
{
public:
	int getFactorial(int n)
	{
		int product = 0;
		if ((0 == n) || (1 == n))
		{
			product = 1;
		}
		else
		{
			product = n * getFactorial( n - 1);
		}
		return product;
	};
};


//但我们现在想要一个计算阶乘之和的功能 0! + 1! + 2! + ....n!
//如果实现呢?首先要想到我们已经把计算阶乘都搞定了,上个类测试
//没有任何问题,大胆放心用吧

//定义一个抽象类吧。只定义我们需要的接口
//任何事情先想我们要什么,先不用考虑如何实现它的功能,从繁琐的
//的实现中解脱出来,把实现交给别人吧。
class FactorialSum
{
public:
	virtual int getFactorialSum(int n) = 0;
};


//实现方法一:
//具体来实现这个接口吧, 先通过委托来实现吧
class ConcreteFactorialsun1 : public FactorialSum
{
public:
	Factorial fac;
	int getFactorialSum(int n)
	{
		int sum = 0;
		for(int i=0; i<=n; i++)
		{
			sum += fac.getFactorial(i);
		}
		return sum;
	};
};


//实现方法二:
//具体来实现这个接口吧, 通过多重继承来实现吧
class ConcreteFactorialsun2 : public FactorialSum, Factorial
{
public:
	int getFactorialSum(int n)
	{
		int sum = 0;
		for(int i=0; i<=n; i++)
		{
			sum += getFactorial(i);
		}
		return sum;
	};
};



int _tmain(int argc, _TCHAR* argv[])
{
	FactorialSum *pfs1 = new ConcreteFactorialsun1;
	printf("sum=%d\n", pfs1->getFactorialSum(5));

	delete pfs1;

	pfs1 = new ConcreteFactorialsun2;
	printf("sum=%d\n", pfs1->getFactorialSum(5));
	delete pfs1;

	getchar();
	return 0;
}


适配器模式,换个包装再度利用 Adapter,布布扣,bubuko.com

适配器模式,换个包装再度利用 Adapter

原文:http://blog.csdn.net/wayneforever/article/details/21599929

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!