<c/c++ Edition > Design mode learning Factory mode <2>

Source: Internet
Author: User

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>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.