Just with the code
[Cpp]
# Include "stdafx. h"
# Include <windows. h>
Enum EOperator
{
ADD_OPER,
Sub_listener
};
Class MathOperator
{
Public:
MathOperator (){;}
Virtual ~ MathOperator (){;}
Void SetMember (int first, int second)
{
M_nFirst = first;
M_nSecond = second;
}
Virtual int GetResult () = 0;
Protected:
Int m_nFirst;
Int m_nSecond;
};
Class AddOperator: public MathOperator
{
Public:
Int GetResult ()
{
Return m_nFirst + m_nSecond;
}
};
Class SubOperator: public MathOperator
{
Public:
Int GetResult ()
{
Return m_nFirst-m_nSecond;
}
};
Class OperatorFactory
{
Public:
MathOperator * CreateOperator (EOperator eator)
{
MathOperator * pOper = NULL;
Switch (EIP)
{
Case ADD_OPER:
POper = new AddOperator ();
Break;
Case SUB_OPER:
POper = new SubOperator ();
Break;
}
Return pOper;
}
};
Int _ tmain (int argc, _ TCHAR * argv [])
{
OperatorFactory OFactrory;
MathOperator * pOper = OFactrory. CreateOperator (add_operator );
POper-> SetMember (2, 3 );
Int nResult = pOper-> GetResult ();
If (pOper)
{
Delete pOper;
POper = NULL;
}
Return 0;
}