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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python实现获取序列中最小的几个元素
Sep 25 Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
Python中的with...as用法介绍
May 28 Python
django1.8使用表单上传文件的实现方法
Nov 04 Python
Python django实现简单的邮件系统发送邮件功能
Jul 14 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 Python
python多线程使用方法实例详解
Dec 30 Python
Django Serializer HiddenField隐藏字段实例
Mar 31 Python
字典算法实现及操作 --python(实用)
Mar 31 Python
Python如何加载模型并查看网络
Jul 15 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 静态化实现代码
2009/03/20 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
Laravel服务容器绑定的几种方法总结
2020/06/14 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
Vue实现可移动水平时间轴
2020/06/29 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
Python中的rfind()方法使用详解
2015/05/19 Python
Golang与python线程详解及简单实例
2017/04/27 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Python的几种主动结束程序方式
2019/11/22 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
猫咪家具:CatsPlay
2018/11/03 全球购物
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
优秀应届毕业生自荐信
2013/11/16 职场文书
家长会主持词开场白
2014/03/18 职场文书
《云房子》教学反思
2014/04/20 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
市场营销专业应届生自荐信
2014/06/19 职场文书
师德师风自查总结
2014/10/14 职场文书
检讨书怎么写
2015/01/23 职场文书
功夫熊猫观后感
2015/06/10 职场文书