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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
Python下rrdtool模块的基本使用方法
Nov 13 Python
Python 调用Java实例详解
Jun 02 Python
Python实现的递归神经网络简单示例
Aug 11 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
Apr 08 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python 窃取摄像头照片的实现示例
Jan 08 Python
详解用Python把PDF转为Word方法总结
Apr 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
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
php分页代码学习示例分享
2014/02/20 PHP
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
jquery下json数组的操作实现代码
2010/08/09 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
浅析BootStrap Treeview的简单使用
2016/10/12 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
JS实现表单中点击小眼睛显示隐藏密码框中的密码
2020/04/13 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
python安装教程
2018/02/28 Python
python中logging包的使用总结
2018/02/28 Python
python利用7z批量解压rar的实现
2019/08/07 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
戴森英国官网:Dyson英国
2019/05/07 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
学生就业推荐信
2013/11/13 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
委托书模板
2014/04/04 职场文书
安全生产月演讲稿
2014/05/09 职场文书
教师节活动总结
2014/08/29 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
质量负责人岗位职责
2015/02/15 职场文书
写给老师的保证书
2015/05/09 职场文书
红高粱观后感
2015/06/10 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书