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之大话题小函数(2)
Oct 10 Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
Apr 28 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
Python实现获取命令行输出结果的方法
Jun 10 Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
python计算两个矩形框重合百分比的实例
Nov 07 Python
python-OpenCV 实现将数组转换成灰度图和彩图
Jan 09 Python
PyQT5 实现快捷键复制表格数据的方法示例
Jun 19 Python
Python 实现简单的客户端认证
Jul 29 Python
python manim实现排序算法动画示例
Aug 14 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无限分类源码分享(思路不错)
2011/10/13 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
jQuery的一些注意
2006/12/06 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
Javascript实现找不同色块的游戏
2017/07/17 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
python二叉树的实现实例
2013/11/21 Python
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
介绍一下gcc特性
2015/10/31 面试题
网游商务专员求职信
2013/10/15 职场文书
学术会议主持词
2014/03/17 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
手术室护士个人总结
2015/02/13 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
水知道答案观后感
2015/06/08 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
python小程序之飘落的银杏
2021/04/17 Python
基于Python的EasyGUI学习实践
2021/05/07 Python
浅谈Vue的computed计算属性
2022/03/21 Vue.js