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之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
Python中装饰器学习总结
Feb 10 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python实现聊天机器人的示例代码
Jul 09 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
python函数不定长参数使用方法解析
Dec 14 Python
python+OpenCV实现图像拼接
Mar 05 Python
pycharm实现在虚拟环境中引入别人的项目
Mar 09 Python
Python如何实现爬取B站视频
May 20 Python
python 解决selenium 中的 .clear()方法失效问题
Sep 01 Python
浅谈pytorch中的dropout的概率p
May 27 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
PL-880隐藏功能
2021/03/01 无线电
SSI指令
2006/11/25 PHP
php中iconv函数使用方法
2008/05/24 PHP
php 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
2016/05/20 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
对Python中画图时候的线类型详解
2019/07/07 Python
大数据分析用java还是Python
2020/07/06 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
十一个高级MySql面试题
2014/10/06 面试题
实习教师个人的自我评价
2013/11/08 职场文书
干部下基层实施方案
2014/03/14 职场文书
升国旗演讲稿
2014/09/05 职场文书
标准单位租车协议书
2014/09/23 职场文书
党员发展大会主持词
2015/07/03 职场文书
升学宴学生致辞
2015/07/27 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
mysql函数之截取字符串的实现
2022/08/14 MySQL