python3设计模式之简单工厂模式


Posted in Python onOctober 17, 2017

在Python3环境下,调试实现了《大话设计模式》中简单工厂模式,通过定义单独的工厂类,完成对具体的产品的实例化,参考链接

具体实现见代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Date : 2017-10-15 21:46:28
# Author : John
# Version : V1.001
# Func :


class Operator(object):
 """docstring for Operator"""

 def __init__(self, NumberA=0, NumberB=0):
 super(Operator, self).__init__()
 self.NumberA = NumberA
 self.NumberB = NumberB

 def GetResult(self):
 pass


class AddOp(Operator):
 """docstring for AddOp"""

 def GetResult(self):
 return int(float(self.NumberA) + float(self.NumberB))


class MinusOp(Operator):
 """docstring for MinusOp"""

 def GetResult(self):
 return int(float(self.NumberA) - float(self.NumberB))


class MultiOp(Operator):
 """docstring for MultiOp"""

 def GetResult(self):
 return int(float(self.NumberA) * float(self.NumberB))


class DivideOp(Operator):
 """docstring for DivideOp"""

 def GetResult(self):
 try:
  return float(float(self.NumberA) / float(self.NumberB) * 1.0)
 except ZeroDivisionError as e:
  print("DivideOp error, {0}".format(e))


class OperatorFactory(object):
 """docstring for OperatorFactory"""

 def ChooseOperator(self, op):
 if op == '+':
  return AddOp()
 if op == '-':
  return MinusOp()
 if op == '*':
  return MultiOp()
 if op == '/':
  return DivideOp()


if __name__ == '__main__':
 ch = ''
 while not ch == 'q':
 NumberA = input('Please input NumberA: ')
 op = input('Please input operator: ')
 NumberB = input('Please input NumberB: ')

 factory = OperatorFactory()
 opType = factory.ChooseOperator(op)
 opType.NumberA = NumberA
 opType.NumberB = NumberB

 print('The result is: {0}'.format(opType.GetResult()))
 print('\n#-- input q to exit any key to continue')

 try:
  ch = str(input())
 except Exception as e:
  print('Get input error: {0}'.format(e))
  print('Use default value to ch')
  ch = ''

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python开发编码规范
Sep 08 Python
使用Python对Csv文件操作实例代码
May 12 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
numpy.where() 用法详解
May 27 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
python中调试或排错的五种方法示例
Sep 12 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
深入了解Python enumerate和zip
Jul 16 Python
python matplotlib库的基本使用
Sep 23 Python
Python hashlib模块的使用示例
Oct 09 Python
简单且有用的Python数据分析和机器学习代码
Jul 02 Python
基于Python和Scikit-Learn的机器学习探索
Oct 16 #Python
python版简单工厂模式
Oct 16 #Python
Python实现扩展内置类型的方法分析
Oct 16 #Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 #Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 #Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 #Python
python中文件变化监控示例(watchdog)
Oct 16 #Python
You might like
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
layui-select动态选中值的例子
2019/09/23 Javascript
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
Sanic框架应用部署方法详解
2018/07/18 Python
YUV转为jpg图像的实现
2019/12/09 Python
python实现梯度下降法
2020/03/24 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
类的返射机制中的包及核心类
2016/09/12 面试题
材料加工硕士生求职信
2013/10/10 职场文书
《问银河》教学反思
2014/02/19 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
立志成才演讲稿
2014/09/04 职场文书
个人收入证明模板
2014/09/18 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
九寨沟导游词
2015/02/02 职场文书
Python移位密码、仿射变换解密实例代码
2021/06/27 Python
javascript对象3个属性特征
2021/11/17 Javascript