大话设计模式Python实现-简单工厂模式
简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类.
下面使用简单工厂模式实现一个简单的四则运算
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 6 ''' 7 大话设计模式 8 用任意一种面向对象语言实现一个计算器控制台程序。要求输入两个数和运算符号,得到结果 9 设计模式——简单工厂模式 10 简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 11 ''' 12 13 class Operation(object): 14 ''' 15 四则运算的父类,接收用户输入的数值 16 ''' 17 def __init__(self, number1=0, number2=0): 18 self.num1 = number1 19 self.num2 = number2 20 21 def GetResult(self): 22 pass 23 pass 24 25 #加法运算类 26 class OperationAdd(Operation): 27 def GetResult(self): 28 return self.num1 + self.num2 29 30 #减法运算类 31 class OperationSub(Operation): 32 def GetResult(self): 33 return self.num1 - self.num2 34 35 #乘法运算类 36 class OperationMul(Operation): 37 def GetResult(self): 38 return self.num1 * self.num2 39 40 #除法运算类 41 class OperationDiv(Operation): 42 def GetResult(self): 43 if self.num2 == 0: 44 return '除数不能为0 ' 45 return 1.0*self.num1 / self.num2 46 47 #其他操作符类 48 class OperationUndef(Operation): 49 def GetResult(self): 50 return '操作符错误' 51 52 #简单工厂类 53 class OperationFactory(object): 54 def choose_oper(self,ch): 55 if ch == '+': 56 return OperationAdd() 57 elif ch == '-': 58 return OperationSub() 59 elif ch == '*': 60 return OperationMul() 61 elif ch == '/': 62 return OperationDiv() 63 else: 64 return OperationUndef() 65 66 if __name__ == "__main__": 67 ch = '' 68 while not ch == 'q': 69 num1 = input('请输入第一个数值: ') 70 oper = str(raw_input('请输入一个四则运算符: ')) 71 num2 = input('请输入第二个数值: ') 72 # Operation(num1,num2) 73 OF = OperationFactory() 74 oper_obj = OF.choose_oper(oper) 75 oper_obj.num1 = num1 76 oper_obj.num2 = num2 77 print '运算结果为: ',oper_obj.GetResult()
这几个类的结构图如下:
专门定义一个Operation类作为父类,加减乘除运算类继承Operation类,OperationFactory类用来决定什么时候创建对应的类
作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载于:https://www.cnblogs.com/onepiece-andy/p/python-simple-factory-pattern.html
大话设计模式Python实现-简单工厂模式相关推荐
- 23种设计模式 -----Day01:简单工厂模式
目录 前言 1.设计模式(Design pattern)定义 2.为什么要使用设计模式(使用设计模式的意义) 3.设计原则 a.单一职责原则 b.开放封闭原则 c.里氏代换原则 d.迪米特法则 e.依 ...
- 设计模式 笔记4 | 简单工厂模式 在源码中的应用 | Calendar 日历 | 源码浅析 | 使用总结 | 建造者模式
文章目录 一.Calendar 日历类 1.1 内部属性 1.2 设置时间属性值 1.3 获取时间属性 1.4 使用 Calander 计算时间 二.Calender 类中的设计模式 2.1 简单工厂 ...
- 手撕设计模式之「简单工厂模式」(Java描述)
前言 利用简单工厂模式可以实现对象创建和业务逻辑处理的分离,但存在工厂类职责过重,增添新产品违背开闭原则等问题.它不属于GoF 23种设计模式之一,但是它可以作为学习工厂方法模式前的一个很好的引导. ...
- 设计模式----2(简单工厂模式的概念,简单工厂模式的实现,简单工厂模式的优缺点)
简单工厂模式 简单工厂模式的概念 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负 责创建其他类的实例,被创建的实例通常都具有共同的父类. 具体分类 工厂(Creator ...
- 设计模式(1):简单工厂模式(Simple Factory Pattern)
1. 从一个简单的例子开始 在众多的设计原则中,有一条原则是这么说的:要针对接口编程,不要针对实现编程. 针对接口编程的话,可以使用不同的实现类来创建这个对象.比如需要一个List: List< ...
- Java描述设计模式(02):简单工厂模式
一.生活场景简介 1.引入场景 订餐流程简单描述 1).食品抽象类,规定食品的基础属性操作 2).鱼类,鸡肉类食品类扩展 3).订餐流程类,根据食品名称,加工指定类型食品 4).模拟客户端预定操作 2 ...
- 设计模式学习-简单工厂模式
模式概述: 专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类,简单工厂(Simple Factory)模式又称为静态工厂方法(Static Factory Method)模式,属 ...
- 从王者荣耀看设计模式(四.简单工厂模式)
从王者荣耀看设计模式(简单工厂模式) 一.简介 游戏开始前,玩家可从英雄池自由挑选将要出战的英雄 二.简单工厂模式 简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫 ...
- 设计模式第一篇——简单工厂模式&类图
从今天开始,小菜决定记录下来自己学习设计模式的过程,并总结每天所学内容记录在博客中. 以编写计算器程序为例,有+,-,*,/--很多种运算,因此需要if,else或switch,case进行判断,当有 ...
最新文章
- html网页在指定位置嵌入表格,网页制作中表格的主要作用 网页制作中插入表格怎么调整位置...
- 全球及中国卫星通信设备市场应用需求分析与投资潜力预测报告2022年
- 五子棋开发案列c语言,C语言案例:控制台版本的五子棋游戏【代码】
- xp版php,PHP5.3以后的版本如何在XP中安装
- Javascript 面向对象编程定义接口的一种方法
- 软件工程课堂作业——寻找“水王”
- 分布式事务选型的取舍 | 建议收藏
- InnoDB 的索引模型
- 应用的生命周期各个程序运行状态时代理的回调
- centos系统设置局域网静态IP
- docker export_docker使用简介
- 可重复使用的MicroProfile Health探针
- 将Jersey与Spring整合
- eclipse中查看mysql_eclipse中怎样查看sqlite数据库的表
- 设计模式1——设计模式的原则
- 智能体行为建模与方法
- git 暂存文件操作 stash
- 泛函分析笔记08:有界线性算子和泛函介绍与共鸣定理
- 黑马 Python 数据结构与算法第一章
- matlab里的dsolve,matlab_dsolve
热门文章
- dbForge Studio 2020 for MySQL中文版
- 仿基金查询输入框下拉筛选值效果(JavaScript)
- git学习创建项目仓库
- codevs 1085 数字游戏 dp或者暴搜
- 如何在MyEclipse中将项目部署Tomcat
- [转]C#中的委托和事件(续)
- Cocos2d-CCScene所有场景切换特效[转载]
- LeetCode 14. Longest Common Prefix字典树 trie树 学习之 公共前缀字符串
- 山西五台警方通报“男子强拽女学生”:嫌疑人被刑拘
- 《软件建模与设计: UML、用例、模式和软件体系结构》一一