The following code implements the simple Factory mode:
Declare a factory class whose members can be seen as the main product type of the plant.
We will declare a few sub-factory classes, according to customer requirements to produce different types of products.
To add new products, simply declare a new factory subclass.
The code is as follows:
Factory.h#ifndef factory_h#define factory_h//calculation class coperate{public:coperate (void); Coperate (float num_a, float num_b), virtual float getresult ();p ublic:static float number_a;static float number_b;};/ /calculation Subclass--plus class coperate_add:public coperate{public:virtual float GetResult ();};/ /Calculate Subclass--minus class coperate_sub:public coperate{public:virtual float GetResult ();};/ /Calculate Subclass--Multiply class coperate_mul:public coperate{public:virtual float GetResult ();};/ /compute Subclass--except class Coperate_div:public coperate{public:virtual float GetResult ();};/ /Calculation factory class coperatefactory{public:static Coperate * createoperate (char operate_sign);}; #endif
Factory.cpp#include "Factory.h" float coperate::number_a = 0;float Coperate::number_b = 0;//default constructor coperate:: Coperate (void) {//number_a = 0;//number_b = 0;} Coperate::coperate (float num_a, float num_b) {number_a = Num_a;number_b = Num_b;} Float Coperate::getresult () {Float result = 0;return result;} Calculate subclass Float Coperate_add::getresult () {float result = 0;result = number_a + number_b;return result;}; Float Coperate_sub::getresult () {float result = 0;result = Number_a-number_b;return result;}; Float Coperate_mul::getresult () {float result = 0;result = number_a * Number_b;return result;}; Float Coperate_div::getresult () {float result = 0;result = Number_a/number_b;return result;}; Coperate * Coperatefactory::createoperate (char operate_sign) {coperate * ope = 0;switch (operate_sign) {case ' + ': {ope = new Coperate_add;break;} Case '-': {ope = new Coperate_sub;break;} Case ' * ': {ope = new Coperate_mul;break;} Case '/': {ope = new Coperate_div;break;}} return ope;}
User.cpp---Client # include "Factory.h" #include "iostream" int main () {using namespace std;float num_a, Num_b;char ope_sign ;cout<< "Input first number:";cin>>num_a;cout<< "input Second number:";cin>>num_b;cout< < "Input Operate sign:";cin>>ope_sign; Coperate * Myopera = new Coperate (num_a, num_b); Myopera = Coperatefactory::createoperate (ope_sign); float result = MyOpera ->getresult ();cout<< "Result is:" <<RESULT<<ENDL;}
<c/c++ Edition > Design mode learning Factory mode <2>