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 是定义抽象方法 简单工厂模式:通过接口创建对象,但不会暴露 ...
随机推荐
- ionic android app 签名处理
第一步:生成签名证书. y@y:my_temp$ $ keytool -genkey -v -keystore my-release-key.keystore -alias ydkt -keyalg ...
- COJ 0244 HDNOIP201404最短路径
HDNOIP201404最短路径 难度级别: A: 编程语言:不限:运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 a.b.c是3个互不相等的1 ...
- 【转】java读写二进制文件的解决方法
原文网址:http://www.jb51.net/article/36940.htm 接口:Writerable 复制代码代码如下: package com.geoway.pad.common; im ...
- HDU5266---pog loves szh III (线段树+LCA)
题意:N个点的有向树, Q次询问, 每次询问区间[L, R]内所有点的LCA. 大致做法:线段树每个点保存它的孩子的LCA值, 对于每一次询问只需要 在线段树查询即可. #include <bi ...
- HDU-1176(基础方程DP)
Problem Description 都 说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉, 就掉落在他 ...
- memcached学习——大纲简介 && 安装(基于centos6.5)、启动、关闭memcached(一)
大纲简介 安装前,先简单介绍一下memcached. memcached是一个免费.开源.高性能的分布式缓存.设计memcached的初衷是为了加快web应用程序,减少DB负载. 安装要求:支持大多数 ...
- CATransform3D 讲解
最近看到一个3D动画效果,决定认真就研究一下.从网上看到很多介绍,下面详细的讲解一下CATransform3D CATransform3D结构成员的意义. structCATransform3D { ...
- 【C#通用类】日志记录类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- wm命令用法及LCD显示图标大小不正常时解决的方法
注:Android 4.3引入的wm工具 wm命令及使用方法: 系统说明: usage: wm [subcommand] [options] ...
- 2013国内IT行业薪资对照表【技术岗】
(本文为转载,具体出处不详) 说薪水,是所有人最关心的问题.我只 想说如果想在薪水上面满意,在中国,没有哪里比垄断国企好.电力.烟草.通信才是应该努力的方向.但是像我们这种搞研发的进IT行业似乎是注定 ...