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中用于求最小值的min()方法
May 15 Python
各个系统下的Python解释器相关安装方法
Oct 12 Python
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
Python实现的质因式分解算法示例
May 03 Python
分享vim python缩进等一些配置
Jul 02 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
Jul 16 Python
python 实现二维列表转置
Dec 02 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
Jul 01 Python
区分python中的进程与线程
Aug 13 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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事务处理实例详解
2014/07/11 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
php bootstrap实现简单登录
2016/03/08 PHP
PHP设计模式之策略模式原理与用法实例分析
2019/04/04 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
聊一聊jQuery插件uploadify使用方法
2016/08/24 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
2017/07/31 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
原生JS实现音乐播放器的示例代码
2021/02/25 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python实现月食效果实例代码
2019/06/18 Python
tensorflow入门:tfrecord 和tf.data.TFRecordDataset的使用
2020/01/20 Python
Keras 使用 Lambda层详解
2020/06/10 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
PyTorch安装与基本使用详解
2020/08/31 Python
基于IE10/HTML5 开发
2013/04/22 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
企业贷款委托书格式
2014/09/12 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
canvas多重阴影发光效果实现
2021/04/20 Javascript
一道JS算法面试题——冒泡、选择排序
2021/04/21 Javascript
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
中国十大神话动漫电影排行榜 哪吒登顶 白蛇缘起排第七
2022/03/21 国漫