設計モードのアダプタ、C++実現

1093 ワード

みんなはもっと使うべきで、コードだけをつけます
// AdapterMode.cpp :              。
//

#include "stdafx.h"

//      (Adapter),               
//        ,                   
//               


//    ,    

//     :                  
//             

class MathAdd
{
public:
	virtual int Add(int a, int b) = 0;
protected:
private:
};

//      
class MathAdd_Veteran : public MathAdd
{
public:
	int Add(int a, int b)
	{
		return a + b;
	}
};

//      
class MathAdd_Novice
{
public:
	int jiafa(int a, int b)
	{
		return a + b;
	}
protected:
private:
};

//   ,         ,        
//        。。

class MathAdd_Helper : public MathAdd
{
public:
	int Add(int a, int b)
	{
		return m_Mn.jiafa(a, b);
	}
private:
	MathAdd_Novice m_Mn;
};

//            
int Add(MathAdd* pMa, int a, int b)
{
	return pMa->Add(a, b);
}

int _tmain(int argc, _TCHAR* argv[])
{
	MathAdd *pMv = (MathAdd*) new MathAdd_Veteran;
	int r = Add(pMv, 100, -20);

	//   ,      ,             
	//              
	//           !
	MathAdd *pMh = (MathAdd*) new MathAdd_Helper;
	r = Add(pMh, 1, 2);
	return 0;
}