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采用getopt解析命令行输入参数实例
Sep 30 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
Python版微信红包分配算法
May 04 Python
python清理子进程机制剖析
Nov 23 Python
python版本的仿windows计划任务工具
Apr 30 Python
python批量修改图片大小的方法
Jul 24 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
详解Python读取yaml文件多层菜单
Mar 23 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
Python Selenium XPath根据文本内容查找元素的方法
Dec 07 Python
pytorch中[..., 0]的用法说明
May 20 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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提交后跳转
2013/06/23 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
js 判断图片是否加载完以及实现图片的预下载
2014/08/14 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
Python备份目录及目录下的全部内容的实现方法
2016/06/12 Python
在centos7中分布式部署pyspider
2017/05/03 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
详解python如何引用包package
2020/06/07 Python
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
新教师培训方案
2014/06/08 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
2015入党自传书范文
2015/06/26 职场文书
优质服务心得体会(共4篇)
2016/01/22 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫