Python之简单工厂模式实现
最近又看了下大话设计模式,决定用Python来试着实现下。
基础类
class OperationBase():
"""
基础运算类
"""
result = 0
def GetResult(self):
return self.result
继承类
class OperationAdd(OperationBase):
"""
加法类,继承基础运算类
"""
def __init__(self,numA,numB):
self.result = numA + numB
def GetResult(self):
return self.result class OperationSub(OperationBase):
"""
减法运算类,继承基础运算类
"""
def __init__(self,numA,numB):
self.result = numA - numB
def GetResult(self):
return self.result class OperationMult(OperationBase):
"""
乘法运算类,继承基础运算类
"""
def __init__(self,numA,numB):
self.result = numA * numB
def GetResult(self):
return self.result class OperationDiv(OperationBase):
"""
除法运算类,继承基础运算类,通过被除数为0异常捕获控制被除数不能为0
"""
def __init__(self,numA,numB):
try:
self.result = numA / numB
except ZeroDivisionError:
print "除数不能为0!!!" def GetResult(self):
return self.result #工厂类
class OperationFactor():
@staticmethod
def createOperate(operate,numA,numB):
for case in switch(operate):
if case('+'):
oper = OperationAdd(numA,numB)
break
if case('-'):
oper = OperationSub(numA,numB)
break
if case('*'):
oper = OperationMult(numA,numB)
break
if case('/'):
oper = OperationDiv(numA,numB)
break
return oper if __name__ == '__main__':
opt = raw_input("请输入一个运算操作符(+-*/):")
try:
numA = float(raw_input("请输入第一个运算的数字:"))
numB = float(raw_input("请输入第二个运算的数字:"))
except ValueError:
print "输入数字不对,请重新输入!"
numA = float(raw_input("请输入第一个运算的数字:"))
numB = float(raw_input("请输入第二个运算的数字:")) oper = OperationFactor.createOperate(opt,float(numA),float(numB))
print "Result = ",oper.GetResult()
里面的case可以参考我另外一篇博客
http://www.cnblogs.com/ListenWind/p/4267517.html
Python之简单工厂模式实现的更多相关文章
- python实现简单工厂模式
python实现简单工厂模式 模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工 ...
- Python 设计模式--简单工厂模式
简单工厂模式(Factory Pattern)是一种创建型的设计模式,像工厂一样根据要求生产对象实例. 特点:根据不同的条件,工厂实例化出合适的对象. <大话设计模式>中实例:四则运算计算 ...
- 大话设计模式Python实现-简单工厂模式
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 下面使用简单工厂模式实现一个简单的四则运算 #!/usr/ ...
- [python实现设计模式]-3.简单工厂模式-触宝开放平台
预备知识: 开放封闭原则(Open-Closed Principle OCP) Software entities(classes,modules,functions etc) should open ...
- [Python设计模式] 第1章 计算器——简单工厂模式
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模 ...
- python设计模式 之 简单工厂模式
简单工厂模式属于类的创建型模式,适合用来对大量具有共同接口的类进行实例化,它能够推迟到执行的时候才动态决定要创建哪个类的实例.而不是在编译时就必须知道要实例化哪个类. python: #!/usr/b ...
- 《大话设计模式》——简单工厂模式(Python版)
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 例: 使用Python设计一个控制台计算器,要求输入两个数 ...
- python 设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)
十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ...
- python 简单工厂模式
abc 是抽象类模块abc.ABC 是继承抽象类 也可直接继承 (metaclass=ABCMeta)abc.abstractmethod 是定义抽象方法 简单工厂模式:通过接口创建对象,但不会暴露 ...
随机推荐
- favicon支持的图片格式
为网站设置favicon有两种方式: 1.网站根目录下放置名为favicon.ico的图片,浏览器就会自动获取: 2.在页面中通过<link rel="shortcut icon&qu ...
- 玩转Google开源C++单元测试框架Google Test系列(转载)
越来越多公司采用敏捷开发,单元和回归测试越来越重要,GTest作为最佳C++单元测试工具越来越多的被使用.转自 http://www.cnblogs.com/coderzh/archive/2009/ ...
- CRegKey 注册表操作
CRegKey 注册表操作 标签: accessnulluserpathbyteie 2011-11-03 13:55 3477人阅读 评论(0) 收藏 举报 分类: win32(7) 1.简介 ...
- 2013第39周一Web打印
2013第39周一Web打印 项目中遇到了Java Web打印问题,简单调用IE浏览器的打印不能完全满足要求,于是就搜集了Web打印相关的主题,简单汇总一下.web打印难点在分页.页面纸张设置,页眉页 ...
- poj3177 Redundant Paths
Description In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numb ...
- js执行引擎(js解释器)
看字面理解,js执行引擎讲的就是将js代码转化为机器码并执行的过程. 一款 JavaScript 引擎是由 Brendan Eich 在网景的 Navigator 中开发的,它的名字叫做 Spider ...
- CentOS 6.3下Samba服务器的安装与配置(转)
CentOS 6.3下Samba服务器的安装与配置 一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写, ...
- memcached几个easy被忽略但很实用的命令
一.CAS和GETS Memcached从1.2.4版本号新增CAS(Check and Set)协议,用于处理同一个ITEM(key-value)被多个session更新改动时的数据一致性问题. 如 ...
- JDK版本错误:Unsupported major.minor version 51.0
错误原因 有时候把项目从本机编译文件部署到服务器,或者发给别人使用时,会报如下异常: java.lang.UnsupportedClassVersionError: test_hello_world ...
- springmvc中项目启动直接调用方法
1. <servlet> <servlet-name> AutoServlet </servlet-name> <servlet-class> com. ...