首页 > 代码库 > 5.简单工厂模式

5.简单工厂模式



1简单工厂模式的核心内容是:

A:方法独立

B:工厂没有,而是通过switch的方式判断使用哪个方法。

C:理解:带同一个妹子到同一个地点,妹子可以选择不同的菜。

2简单工厂模式的作用:用一个简单的switch和一个方法控制使用哪个方法。

3简单工厂模式具体描述

工厂模式:客户类和工厂类分开。

消费者任何时候需要某种产品,只需向工厂请求即可。

消费者无须修改就可以接纳新产品。缺点是当产品修改时,

工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

 

MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,

虽然口味有所不同,但不管你带MM去麦当劳或肯德基,

只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory

 

第一,基类存放数据

第二,派生类有很多,派生类存放数据的操作

第三实现接口类,用静态函数实现调用各种派生类

4.简单工厂模式类图


5.代码:

#include<iostream>

#include<string>

usingnamespacestd;

 

//工厂模式:客户类和工厂类分开。

//消费者任何时候需要某种产品,只需向工厂请求即可。

//消费者无须修改就可以接纳新产品。缺点是当产品修改时,

//工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

 

//MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,

//虽然口味有所不同,但不管你带MM去麦当劳或肯德基,

//只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory

 

//第一,基类存放数据

//第二,派生类有很多,派生类存放数据的操作

//第三实现接口类,用静态函数实现调用各种派生类

 

//基类存放数据

classOperation

{

public:

   doublenumberA,numberB;//两个数

   virtualdouble getResult()//获取结果

   {

       return 0;

   }

};

 

//派生类存放操作

classaddOperation :publicOperation

{

   doublegetResult()

   {

       returnnumberA +numberB;

   }

};

 

//减操作

classsubOperation :publicOperation

{

   doublegetResult()

   {

       returnnumberA -numberB;

   }

};

 

//乘操作

classmulOperation :publicOperation

{

   doublegetResult()

   {

       returnnumberA*numberB;

   }

};

 

//除操作

classdivOperation :publicOperation

{

   doublegetResult()

   {

       returnnumberA /numberB;

   }

};

 

//个人理解:类此一个控制器,通过传递标记来控制调用哪个操作

classoperFactory

{

public:

   staticOperation *createOperation(charc)

   {

       switch (c)

       {

       case‘+‘:

           returnnewaddOperation;

           break;

       case‘-‘:

           returnnewsubOperation;

           break;

       case‘*‘:

           returnnewmulOperation;

       case‘/‘:

           returnnewdivOperation;

           break;

       }

   }

};

 

intmain()

{

   Operation *oper =operFactory::createOperation(‘-‘);

   oper->numberA = 9;

   oper->numberB = 99;

   cout <<oper->getResult() << endl;

 

   cin.get();

   return 0;

}

运行结果如下:

-90

5.简单工厂模式