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利用多进程将大量数据放入有限内存的教程
Apr 01 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
横向对比分析Python解析XML的四种方式
Mar 30 Python
Python爬虫实例扒取2345天气预报
Mar 04 Python
对Python中的@classmethod用法详解
Apr 21 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
对python中的logger模块全面讲解
Apr 28 Python
Python中的字符串切片(截取字符串)的详解
May 15 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
java关于string最常出现的面试题整理
Jan 18 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
php使用curl获取https请求的方法
2015/02/11 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
popdiv
2006/07/14 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
基于OO的动画附加插件,可以实现弹跳、渐隐等动画效果 分享
2013/06/24 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
jquery插件开发之选项卡制作详解
2017/08/30 jQuery
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
Python操作MySQL数据库的方法
2018/06/20 Python
python如何实现视频转代码视频
2019/06/17 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
便利店投资的创业计划书
2014/01/12 职场文书
入党自荐书范文
2014/03/09 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
学生病假条范文
2015/08/17 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server