设计模式实现(一)---简单工厂模式
2014-07-24 18:38
393 查看
简单工厂模式的作用是将逻辑功能部分(算法)与界面功能部分(客户端)的代码分开。做到业务的封装,达到易维护、易扩展。下面见源码
逻辑功能部分(算法部分)
工厂部分
客户端部分
逻辑功能部分(算法部分)
//cash.h class CashSuper //base class { public: virtual double acceptCash(double money) = 0; }; class CashNormal : public CashSuper { public: double acceptCash(double money) { return money; } }; class CashRebate : public CashSuper { public: CashRebate(double rebate){moneyRebate = rebate;} public: double acceptCash(double money) { return money*moneyRebate; } private: double moneyRebate; }; class CashReturn : public CashSuper { public: CashReturn(double condition,double returnback) { moneyCondition = condition; moneyReturn = returnback; } public: double acceptCash(double money) { if(money > moneyCondition) { return money - ((int)money / (int)moneyCondition)*moneyReturn; } else return money; } private: double moneyCondition; double moneyReturn; };
工厂部分
//factory.h //工厂部分 #include <string.h> #include "cash.h" class MoneyFactory { public: MoneyFactory(){moneyType = NULL;} ~MoneyFactory() { if(this->moneyType!=NULL) { delete this->moneyType; moneyType = NULL; } } public: CashSuper *createMoneyType(char *in) { if(this->moneyType!=NULL) { delete this->moneyType; moneyType = NULL; } if(strcmp(in,"正常收费")==0) { moneyType = new CashNormal(); } else if(strcmp(in,"满300减100")==0) { moneyType = new CashReturn(300,100); } else if(strcmp(in,"打8折")==0) { moneyType = new CashRebate(0.8); } return moneyType; } private: CashSuper *moneyType; //利用父类指针调用子类方法 };
客户端部分
//客户端中,需要同时知道两个类,一个是MoneyFactory,另一个是CashSuper //好处:不需要再客户端里判断用那个方法,将业务和逻辑(算法)与客户端分开。 #include "Factory.h" #include <stdio.h> int main() { MoneyFactory factory; CashSuper *cash = factory.createMoneyType("正常收费"); printf("%f \n",cash->acceptCash(500)); cash = factory.createMoneyType("满300减100"); printf("%f \n",cash->acceptCash(500)); cash = factory.createMoneyType("打8折"); printf("%f \n",cash->acceptCash(500)); return 1; }
相关文章推荐
- 设计模式一(简单工厂,采用python实现)
- 简单工厂设计模式C++实现
- 设计模式学习(四): 1.简单工厂 (附C#实现)
- [设计模式]两种方法实现简单工厂模式
- 简单工厂设计模式实现商店买牙膏收费案例过渡到结合策略模式的理由全解
- 【设计模式】【用DOM4J模拟spring实现简单工厂】
- 设计模式之一:简单工厂模式,用python实现简易计算器
- 设计模式-简单工厂设计模式与策略模式之java实现
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- 设计模式之—简单工厂方法(StaticFactory )-Java实现
- 设计模式-简单工厂设计模式与策略模式之java实现二
- C#基础:抽象类和抽象方法实现多态以及简单工厂设计模式的语法
- 设计模式C++实现一:简单工厂模式
- 设计模式之简单工厂C++实现
- 设计模式:浅析 抽象工厂、工厂方法、简单(静态)工厂 java实现
- 设计模式的C++实现 24.简单工厂模式
- 设计模式 -- 简单工厂模式 -- c++实现
- 简单工厂设计模式实现计算器的案例
- C#简单工厂设计模式实现计算器
- 设计模式之二:简单工厂模式—集中式工厂的实现