博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python设计模式(一)--简单工厂(上)
阅读量:6208 次
发布时间:2019-06-21

本文共 1517 字,大约阅读时间需要 5 分钟。

hot3.png

最近正在持续更新源码库,代码都是参考大话设计模式翻成python版,完整代码片段请到github上去下载.

https://github.com/zhengtong0898/python-patterns

参考:

    书籍<<大话设计模式>> 第一章

 

Python 3.x

# -.- coding:utf-8 -.-# __author__ = 'zhengtong'# 简单工厂实现# 知识点:#       1. 继承(类后面加上基类Operation)#       2. 多态(每个子类都出现的get_result)# 编码过程:#       1. 当出现新的需求时,可以通过新增一个类来完成.#       2. 将新的类加入到工厂类的operators字典表中.class Operation:    """运算类"""    def __init__(self, x, y):        self.x = int(x)        self.y = int(y)    def get_result(self):        raise NotImplementedErrorclass Add(Operation):    """加法类"""    def get_result(self):        return self.x + self.yclass Subtract(Operation):    """减法类"""    def get_result(self):        return self.x - self.yclass Multiply(Operation):    """乘法类"""    def get_result(self):        return self.x * self.yclass Divide(Operation):    """除法类"""    def get_result(self):        if self.y == 0:            raise ZeroDivisionError("除数不能为0!")        return self.x / self.yclass SimpleFactory:    """简单工厂"""    @staticmethod    def create_operate(operator, x, y):        operators = {'+': Add, '-': Subtract, '*': Multiply, '/': Divide}        if operator not in operators:            raise KeyError('无效的操作符')        return operators.get(operator)(x, y).get_result()def main():    """    界面交互逻辑函数    """    x = int(input('请输入数字A:'))    operator = input('请输入运算符号(+、-、*、/):')    y = int(input('请输入数字B:'))    return SimpleFactory.create_operate(operator, x, y)if __name__ == '__main__':    print(main())

 

转载于:https://my.oschina.net/zhengtong0898/blog/672775

你可能感兴趣的文章
架构探险笔记10-框架优化之文件上传
查看>>
JAVA单向链表实现
查看>>
02:Kubernetes集群部署——平台环境规划
查看>>
C# 装箱和拆箱
查看>>
批处理命令无法连续执行
查看>>
冒泡的三种写法
查看>>
会计的思考(37):“弱水三千,只取一瓢饮”--业务人员的财务意识
查看>>
eclipse4.3.1标准版安装freemarker插件
查看>>
使用Chrome浏览器自动下载文件并保存到指定的文件路径(使用Selenium更改Chrome默认下载存储路径)...
查看>>
随机存取存储器(RAM)
查看>>
activiti 5.22的demo运行
查看>>
构建微服务:Spring boot 入门篇
查看>>
redis集群搭建
查看>>
随机数的扩展--等概率随机函数的实现
查看>>
转:PHP应用性能优化指南
查看>>
Codeforces 835 F Roads in the Kingdom(树形dp)
查看>>
作业1---四则运算
查看>>
MVC3.0+DWZ探索
查看>>
小程序入口传参:关于带参数的小程序扫码进入的方法
查看>>
转载:ASP.NET在后台代码实现个功能,根据选择提示用户是否继续执行操作
查看>>