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将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
Python中常用操作字符串的函数与方法总结
Feb 04 Python
利用Python操作消息队列RabbitMQ的方法教程
Jul 19 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
Mar 22 Python
Pandas之groupby( )用法笔记小结
Jul 23 Python
Python pandas用法最全整理
Aug 04 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
Aug 30 Python
python3 pathlib库Path类方法总结
Dec 26 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 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
重置版宣传动画
2020/04/09 魔兽争霸
php中base_convert()进制数字转换函数实例
2014/11/20 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
JavaScript学习笔记(三):JavaScript也有入口Main函数
2015/09/12 Javascript
jQuery插件ajaxfileupload.js实现上传文件
2020/10/23 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
2015/08/10 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
如何使用Python的Requests包实现模拟登陆
2018/04/27 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
Foot Locker德国官方网站:美国运动服和鞋类零售商
2018/11/01 全球购物
现金出纳岗位职责
2014/03/15 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
升学宴答谢词
2015/01/05 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
库房管理员岗位职责
2015/02/12 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL