Esempio n. 1
0
int main(int argc, char* argv[])
{
	OperationFactory* cc = new OperationFactoryAdd(3,5);
	cc->CreateOperation();
	cout<<cc->GetResult()<<endl;

	cin.ignore();
	return 0;
}
Esempio n. 2
0
int _tmain(int argc, _TCHAR* argv[])
{
	float fNum1 =0 , fNum2 = 0, fResult = 0;
	char cSymblo;

	cout<<"Number1: ";
	cin>>fNum1;

	cout<<"Operation Symblo(+,-,*,/): ";
	cin>>cSymblo;

	cout<<"Number2: ";
	cin>>fNum2;

	//------ 简单工厂实现-----------------------
	OperationFactory factory;
	OperationBase* pOperation = factory.CreateOperation(cSymblo);
	pOperation->SetNum1(fNum1);
	pOperation->SetNum2(fNum2);

	cout<<"\nResult: "<<pOperation->GetResult();

	//工厂方法: 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类当中。

	//-------工厂方法实现-------------------------
	
	switch(cSymblo)
	{
	case '+':
		OperationFactory2* operFactory =  new AddFactory;
		OperationBase2* oper = operFactory->CreateOperation();
		oper->SetNum1(fNum1);
		oper->SetNum2(fNum2);
		cout<<"\n\nResult: "<<oper->GetResult();
	}


	//----------------------------------------------
	Factory* factory2 = new VolunteerFactory;
	LeiFeng* lei1 = factory2->CreateLeiFeng();
	LeiFeng* lei2 = factory2->CreateLeiFeng();
	LeiFeng* lei3 = factory2->CreateLeiFeng();
	
	lei1->Sweep();
	lei2->Wash();
	lei3->BuyRice();


	cout<<"\n\n";
	system("pause");
	return 0;
}