国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

設計模式(1)-簡單工廠模式

2019-11-08 02:25:52
字體:
來源:轉載
供稿:網友

簡單工廠模式

  簡單工廠模式屬于創建型的設計模式,其特點是使用一個工廠生產所有的類對象,通過在工廠類中進行判斷,然后創建需要的功能類。   優點:不必使用具體的功能類去創建該類的實例。   缺點:新增一個功能類就需要在工廠類中增加一個判斷。

代碼

  此處利用”+”,”-“,”*”,”/”這4個Operation來生成不同的Operation對象來說明簡單工廠模式。

C++代碼

  文件構成:   —include   ——Operation.h   ——Add.h   ——Subtraction.h   ——Multiply.h   ——Division.h   ——OperationFactory.h   —src   ——Add.cpp   ——Subtraction.cpp   ——Multiply.cpp   ——Division.cpp   ——OperationFactory.cpp   ——main.cpp   代碼如下:   —include/Operation.h

#ifndef _OPERATION_H_#define _OPERATION_H_class Operation{public: virtual double GetResult(double A, double B)=0;};#endif

  —include/Add.h

#ifndef _ADD_H_#define _ADD_H_#include"Operation.h"class Add:public Operation{public: double GetResult(double A, double B);};#endif

  —include/Subtraction.h

#ifndef _SUBTRACTION_H_#define _SUBTRACTION_H_#include"Operation.h"class Subtraction:public Operation{public: double GetResult(double A, double B);};#endif

  —include/Multiply.h

#ifndef _MULTIPLY_H_#define _MULTIPLY_H_#include"Operation.h"class Multiply:public Operation{public: double GetResult(double A, double B);};#endif

  —include/Division.h

#ifndef _DIVISION_H_#define _DIVISION_H_#include"Operation.h"class Division:public Operation{public: double GetResult(double A, double B);};#endif

  —include/OperationFactory.h

#ifndef _OPERATIONFACTORY_H_#define _OPERATIONFACTORY_H_#include"Add.h"#include"Subtraction.h"#include"Multiply.h"#include"Division.h"class OperationFactory{public: static Operation* CreateOperation(char opertionType);};#endif

  —src/Add.cpp

#include"Add.h"double Add::GetResult(double A, double B){ return A+B;}

  —src/Subtraction.cpp

#include"Subtraction.h"double Subtraction::GetResult(double A, double B){ return A-B;}

  —src/Multiply.cpp

#include"Multiply.h"double Multiply::GetResult(double A, double B){ return A*B;}

  —src/Division.cpp

#include"Division.h"double Division::GetResult(double A, double B){ return A/B;}

  —src/OperationFactory.cpp

#include<iostream>#include"OperationFactory.h"using namespace std;Operation* OperationFactory::CreateOperation(char operationType){ Operation* op=NULL; switch(operationType) { case '+': op=new Add(); break; case '-': op=new Subtraction(); break; case '*': op=new Multiply(); break; case '/': op=new Division(); break; default: break; } return op;}

  —src/main.cpp

#include<iostream>#include"OperationFactory.h"#include"Operation.h"using namespace std;int main(){ double value1=8; double value2=2; Operation *addOperator=OperationFactory::CreateOperation('+'); Operation *subOperator=OperationFactory::CreateOperation('-'); Operation *mulOperator=OperationFactory::CreateOperation('*'); Operation *divOperator=OperationFactory::CreateOperation('/'); cout<<"Add Operation: "<<value1<<" "<<value2<<" "<<addOperator->GetResult(value1,value2)<<endl; cout<<"Subtraction Operation: "<<value1<<" "<<value2<<" "<<subOperator->GetResult(value1,value2)<<endl; cout<<"Multiply Operation: "<<value1<<" "<<value2<<" "<<mulOperator->GetResult(value1,value2)<<endl; cout<<"Division Operation: "<<value1<<" "<<value2<<" "<<divOperator->GetResult(value1,value2)<<endl; delete addOperator; delete subOperator; delete mulOperator; delete divOperator; return 0;}

Python代碼

  文件構成:   —Operation.py   —OperationFactory.py   代碼如下:   —Operation.py

#-*- coding:utf-8 -*-class Operation: def GetResult(self, A, B): passclass Add(Operation): def GetResult(self, A, B): return A+Bclass Subtraction(Operation): def GetResult(self, A, B): return A-Bclass Multiply(Operation): def GetResult(self, A, B): return A*Bclass Division(Operation): def GetResult(self, A, B): return A/B

   —OperationFactory.py

# -*- coding:utf-8 -*-from Operation import *class OperationFactory: @staticmethod def CreateOperation(operationType): if operationType == "+": return Add() elif operationType == "-": return Subtraction() elif operationType == "*": return Multiply() elif operationType == "/": return Division() else: return Noneif "__main__" == __name__: AddOp = OperationFactory.CreateOperation("+") SubOp = OperationFactory.CreateOperation("-") MulOp = OperationFactory.CreateOperation("*") DivOp = OperationFactory.CreateOperation("/") value1 = 8. value2 = 2.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄梅县| 碌曲县| 宜兰县| 奎屯市| 克拉玛依市| 宁南县| 永春县| 临泽县| 平舆县| 班戈县| 芒康县| 宁津县| 柳河县| 肥乡县| 札达县| 当阳市| 闻喜县| 五指山市| 江陵县| 仲巴县| 宜兴市| 皋兰县| 万年县| 田林县| 湟源县| 沙河市| 淮阳县| 噶尔县| 德庆县| 卓资县| 奈曼旗| 金阳县| 栾川县| 新乡市| 翼城县| 平果县| 永靖县| 阿坝县| 古蔺县| 开江县| 兴仁县|