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提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
python实现视频读取和转化图片
Dec 10 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
基于Python快速处理PDF表格数据
Jun 03 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
python Scrapy爬虫框架的使用
Jan 21 Python
如何用python插入独创性声明
Mar 31 Python
详解运行Python的神器Jupyter Notebook
Jun 03 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
一个颜色轮换的简单例子
2006/10/09 PHP
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
python3序列化与反序列化用法实例
2015/05/26 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
python selenium 查找隐藏元素 自动播放视频功能
2019/07/24 Python
Django URL参数Template反向解析
2020/11/24 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
世界最大域名注册商:GoDaddy
2016/07/24 全球购物
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
刑事上诉状(无罪)
2015/05/23 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
javascript的setTimeout()使用方法总结
2021/11/20 Javascript
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript