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 是定义抽象方法 简单工厂模式:通过接口创建对象,但不会暴露 ...
随机推荐
- DOCKER脚本一例---快速建立大批测试机
这个会由一系列的脚本构成,比如: 系统重启后,如何快速恢复服务,如何建立网桥(也可一次写入),如何在新系统上快速部署. ADDBRIDGE #!/bin/sh br_name=br100 brctl ...
- Mediator pattern(c++ 实现)
概述: 假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片.但是我们不能把所有的功能罗列到一个ta ...
- SQLiteDatabase中的事务
beginTransaction():开始事务endTransaction():结束事务SQLiteDatabase还提供了如下方法来判断当前上下文是否处于事物环境中.inTransaction(): ...
- Codeforces 235E Number Challenge
http://codeforces.com/contest/235/problem/E 远距离orz......rng_58 证明可以见这里(可能要FQ才能看到) 还是copy一下证明吧: 记 $$f ...
- poj2114 Boatherds
Description Boatherds Inc. is a sailing company operating in the country of Trabantustan and offerin ...
- POJ_1321——棋盘问题,回溯+剪枝
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子 ...
- DPDK2.1开发者手册4-7
Mempool Labrary 一个内存池(memory pool)就是固定大小对象的分配器.在dpdk中,它是通过名字来标示唯一性的,且使用环形队列来保存没有使用的空闲对象.它提供了一些可选项服务例 ...
- Bonobos | IT桔子
Trumaker | IT桔子 Trumaker trumaker.com
- 深入理解linux网络技术内幕读书笔记(十)--帧的接收
Table of Contents 1 概述 1.1 帧接收的中断处理 2 设备的开启与关闭 3 队列 4 通知内核帧已接收:NAPI和netif_rx 4.1 NAPI简介 4.1.1 NAPI优点 ...
- [置顶] API相关工作过往的总结之整体介绍
此系列的总结文章,仅仅是我个人工作总结,有考虑不周之处还请各位同行多多指教. API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是 ...