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中的闭包用法实例详解
May 05 Python
Python中subprocess的简单使用示例
Jul 28 Python
Python 结巴分词实现关键词抽取分析
Oct 21 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
Python通过Tesseract库实现文字识别
Mar 05 Python
python中如何写类
Jun 29 Python
Python map及filter函数使用方法解析
Aug 06 Python
Python 操作SQLite数据库的示例
Oct 16 Python
聊一聊python常用的编程模块
May 14 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 获取文件权限函数介绍
2013/07/11 PHP
简单谈谈favicon
2015/06/10 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
2015/08/06 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
2017/12/07 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
[47:03]Ti4第二日主赛事败者组 LGD vs iG 2
2014/07/21 DOTA
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
pycharm实现猜数游戏
2020/12/07 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
简历的自荐信
2013/12/19 职场文书
六年级学生评语
2014/04/22 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
南极大冒险观后感
2015/06/05 职场文书
学前教育见习总结
2015/06/23 职场文书
庆祝教师节主持词
2015/07/06 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
如何用python绘制雷达图
2021/04/24 Python
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python