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 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
Python利用pyHook实现监听用户鼠标与键盘事件
Aug 21 Python
在Python中操作文件之read()方法的使用教程
May 24 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Django与JS交互的示例代码
Aug 23 Python
python实现朴素贝叶斯分类器
Mar 28 Python
Python使用sorted对字典的key或value排序
Nov 15 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
pywinauto自动化操作记事本
Aug 26 Python
python django生成迁移文件的实例
Aug 31 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 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中++i 与 i++ 的区别
2012/08/08 PHP
分享3个php获取日历的函数
2015/09/25 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
PHP7 新增常量
2021/03/09 PHP
JavaScript DOM 添加事件
2009/02/14 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
python3+selenium自动化测试框架详解
2019/03/17 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
Python传递参数的多种方式(小结)
2019/09/18 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
Python timeit模块的使用实践
2020/01/13 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python常量折叠基础知识点讲解
2021/02/28 Python
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
财务会计人员求职的自我评价
2014/01/13 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
高中自我评价范文
2014/01/27 职场文书
学生会竞聘书范文
2014/03/31 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
介绍长城的导游词
2015/01/30 职场文书
政府会议通知范文
2015/04/15 职场文书
《西门豹》教学反思
2016/02/23 职场文书