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每次处理固定个数的字符的方法总结
Jan 29 Python
Python爬取国外天气预报网站的方法
Jul 10 Python
基于Python实现文件大小输出
Jan 11 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 Python
python安装读取grib库总结(推荐)
Jun 24 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
Python Selenium实现无可视化界面过程解析
Aug 25 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 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 Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
JScript分割字符串示例代码
2013/09/04 Javascript
jquery交替变换颜色的三种方法 实例代码
2013/11/19 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
几种tab切换详解
2017/02/03 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python基础教程之类class定义使用方法
2014/02/20 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
在Python中定义一个常量的方法
2018/11/10 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
windows下python安装pip方法详解
2020/02/10 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
"引用"与指针的区别是什么
2016/09/07 面试题
商场端午节活动方案
2014/01/29 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
讲座通知范文
2015/04/23 职场文书
工作态度怎么写
2015/06/25 职场文书
八年级作文之感恩
2019/11/22 职场文书
代码解析React中setState同步和异步问题
2021/06/03 Javascript
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang