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 是定义抽象方法 简单工厂模式:通过接口创建对象,但不会暴露 ...
随机推荐
- 转:6款Java转C#的最佳工
原文来自于:http://designzum.com/2014/03/27/best-tools-to-convert-java-to-c-source-code/ ava is the class ...
- 转:VC中MessageBox的常见用法
一.关于MessageBox 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合. 1.MessageBox("这是一个最简单的 ...
- C#数据类型汇总
通用类型系统 C#中,变量是值还是引用仅取决于数据类型 所有的数据类型都是对象.因为它们具有自己ide方法和属性 int int_value = 101; //调用*int_value*的比较方法与整 ...
- jboss部署应用
简单的部署应用. 第一种方法是直接写JSP代码,然后放到指定的WAR文件夹中. 第二种,是同时META-INF下的application.xml文件,然后用JAR -CF编成WAR,再集合JSP形成E ...
- COJ 0138 NOIP201108计算系数
NOIP201108计算系数 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 给定一个多项式(ax + by)^k,请求出多项式 ...
- 浅谈C#抽象类和C#接口
原文地址:http://www.cnblogs.com/zhxhdean/archive/2011/04/21/2023353.html 一.C#抽象类: C#抽象类是特殊的类,只是不能被实例化:除此 ...
- Power(int base, int exponent) 函数实现
这个是个高效的算法,时间复杂度为 O(logn) 原理: a的n次方: #include<iostream> #include<cmath> using namespace s ...
- Cocos2D-X v3.0 alpha1环境搭建
周末看了下Cocos2D,感觉用起来还是挺爽的样子,跨平台,支持Windows, Linux, Mac, IOS, Android,WP...N多平台..还是C++开源滴,果断下下来研究下.. 最新版 ...
- 认识ptrace函数
认识ptrace函数 这是man对于ptrace这个系统调用的解释 http://man7.org/linux/man-pages/man2/ptrace.2.html #include <sy ...
- Qt的内存管理
在QT的程序中经常会看到只有new而不delete的情况,其实是因为QT有一套回收内存的机制,主要的规则如下: 1.所有继承自QOBJECT类的类,如果在new的时候指定了父亲,那么它的清理时在父亲被 ...