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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
python引用DLL文件的方法
May 11 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
python实现简单ftp客户端的方法
Jun 28 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
Flask框架WTForm表单用法示例
Jul 20 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
Django 构建模板form表单的两种方法
Jun 14 Python
Python Pandas数据分析工具用法实例
Nov 05 Python
python asyncio 协程库的使用
Jan 21 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中与数组相关的函数
2007/03/22 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
jQuery中index()方法用法实例
2014/12/27 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
利用简洁的图片预加载组件提升html5移动页面的用户体验
2016/03/11 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
经典c++面试题六
2012/01/18 面试题
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
进程的查看和调度分别使用什么命令
2015/03/25 面试题
政法学院毕业生求职信
2014/02/28 职场文书
亲属关系公证书
2014/04/08 职场文书
初三新学期计划书
2014/05/03 职场文书
法律专业求职信
2014/05/24 职场文书
安全宣传标语口号
2014/06/06 职场文书
2014和解协议书范文
2014/09/15 职场文书
2014年营业员工作总结
2014/11/18 职场文书
2014年村官工作总结
2014/11/24 职场文书
自我工作评价范文
2015/03/06 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
2022年四月新番
2022/03/15 日漫
python中pycryto实现数据加密
2022/04/29 Python
浅析JavaScript中的变量提升
2022/06/01 Javascript