Python设计模式之简单工厂模式实例详解


Posted in Python onJanuary 22, 2019

本文实例讲述了Python设计模式之简单工厂模式。分享给大家供大家参考,具体如下:

简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.

下面使用简单工厂模式实现一个简单的四则运算

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Andy'
'''
大话设计模式
用任意一种面向对象语言实现一个计算器控制台程序。要求输入两个数和运算符号,得到结果
设计模式——简单工厂模式
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
'''
class Operation(object):
  '''
  四则运算的父类,接收用户输入的数值
  '''
  def __init__(self, number1=0, number2=0):
    self.num1 = number1
    self.num2 = number2
  def GetResult(self):
    pass
  pass
#加法运算类
class OperationAdd(Operation):
  def GetResult(self):
    return self.num1 + self.num2
#减法运算类
class OperationSub(Operation):
  def GetResult(self):
    return self.num1 - self.num2
#乘法运算类
class OperationMul(Operation):
  def GetResult(self):
    return self.num1 * self.num2
#除法运算类
class OperationDiv(Operation):
  def GetResult(self):
    if self.num2 == 0:
      return '除数不能为0 '
    return 1.0*self.num1 / self.num2
#其他操作符类
class OperationUndef(Operation):
  def GetResult(self):
    return '操作符错误'
#简单工厂类
class OperationFactory(object):
  def choose_oper(self,ch):
    if ch == '+':
      return OperationAdd()
    elif ch == '-':
      return OperationSub()
    elif ch == '*':
      return OperationMul()
    elif ch == '/':
      return OperationDiv()
    else:
      return OperationUndef()
if __name__ == "__main__":
  ch = ''
  while not ch == 'q':
    num1 = input('请输入第一个数值: ')
    oper = str(raw_input('请输入一个四则运算符: '))
    num2 = input('请输入第二个数值: ')
    # Operation(num1,num2)
    OF = OperationFactory()
    oper_obj = OF.choose_oper(oper)
    oper_obj.num1 = num1
    oper_obj.num2 = num2
    print '运算结果为: ',oper_obj.GetResult()

运行结果:

 请输入第一个数值:  51
请输入一个四则运算符:  -
请输入第二个数值:  15
运算结果为:  36

这几个类的结构图如下:

Python设计模式之简单工厂模式实例详解

专门定义一个Operation类作为父类,加减乘除运算类继承Operation类,OperationFactory类用来决定什么时候创建对应的类

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python检查指定文件是否存在的方法
Jul 06 Python
Python实现快速多线程ping的方法
Jul 15 Python
分享python数据统计的一些小技巧
Jul 21 Python
基于python OpenCV实现动态人脸检测
May 25 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
在python中用print()输出多个格式化参数的方法
Jul 16 Python
解决python tkinter界面卡死的问题
Jul 17 Python
python实现PID算法及测试的例子
Aug 08 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
python识别验证码图片实例详解
Feb 17 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
python安装第三方库如xlrd的方法
Oct 31 Python
对python字典过滤条件的实例详解
Jan 22 #Python
python实现淘宝秒杀脚本
Jun 23 #Python
python实现网页自动签到功能
Jan 21 #Python
python实现桌面壁纸切换功能
Jan 21 #Python
在Python中通过getattr获取对象引用的方法
Jan 21 #Python
python实现windows壁纸定期更换功能
Jan 21 #Python
PyQt5+requests实现车票查询工具
Jan 21 #Python
You might like
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
session在php5.3中的变化 session_is_registered() is deprecated in
2013/11/12 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
js 操作select相关方法函数
2009/12/06 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
jQuery中delegate和on的用法与区别详细解析
2014/01/26 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
jQuery插件实现可输入和自动匹配的下拉框
2016/10/24 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
使用store来优化React组件的方法
2017/10/23 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
python脚本爬取字体文件的实现方法
2017/04/29 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
大学中国梦演讲稿
2014/04/23 职场文书
代办委托书怎么写
2014/08/01 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs