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实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 Python
Python3.2模拟实现webqq登录
Feb 15 Python
Python基于二分查找实现求整数平方根的方法
May 12 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
python处理csv中的空值方法
Jun 22 Python
用Python解决x的n次方问题
Feb 08 Python
Python实现的多进程拷贝文件并显示百分比功能示例
Apr 09 Python
pycharm访问mysql数据库的方法步骤
Jun 18 Python
利用Python计算KS的实例详解
Mar 03 Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 Python
浅析Python实现DFA算法
Jun 26 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中的一些数组排序方法分享
2012/07/20 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
jQuery select的操作实现代码
2009/05/06 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
微信小程序结合mock.js实现后台模拟及调试
2019/03/28 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python网络编程实例简析
2014/09/26 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
简单了解Pandas缺失值处理方法
2019/11/16 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
写演讲稿要注意的六件事
2014/01/14 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
圣诞节开幕词
2015/01/29 职场文书
大学学生个人总结
2015/02/15 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书