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使用新浪微博api上传图片到微博示例
Jan 10 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
有关Python的22个编程技巧
Aug 29 Python
python实现字符串中字符分类及个数统计
Sep 28 Python
详解python持久化文件读写
Apr 06 Python
django admin后台添加导出excel功能示例代码
May 15 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
python函数不定长参数使用方法解析
Dec 14 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
详解Python 最短匹配模式
Jul 29 Python
python 生成器需注意的小问题
Sep 29 Python
python opencv角点检测连线功能的实现代码
Nov 24 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函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
php实现网站文件批量压缩下载功能
2015/10/28 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
防止页面被iframe(兼容IE,Firefox火狐)
2010/07/04 Javascript
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
使用python实现省市三级菜单效果
2016/01/20 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
详解Python3定时器任务代码
2019/09/23 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python3.8下载及安装步骤详解
2020/01/15 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
计算机专业毕业生自荐信
2013/12/31 职场文书
小班秋游活动方案
2014/02/22 职场文书
汉语专业毕业生自荐信
2014/07/06 职场文书
先进员工获奖感言
2014/08/14 职场文书
讲党性心得体会
2014/09/03 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
教师群众路线心得体会
2014/11/04 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
HTML基础详解(下)
2021/10/16 HTML / CSS