首页 > 编程 > Python > 正文

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

2019-11-25 13:25:42
字体:
来源:转载
供稿:网友

本文实例讲述了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

这几个类的结构图如下:

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

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表