专栏首页Gvoidy备份小站常见设计模式 Python 实现

常见设计模式 Python 实现

简单工厂模式

根据不同条件生产不同功能的类

class op(object):
    def get_ans(self):
        pass

class Add(op):
    def get_ans(self):
        return self.a + self.b

class Mul(op):
    def get_ans(self):
        return self.a * self.b

class Undef(op):
    def get_ans(self):
        return "UNDEF!"

class Factory(op):
    operator = dict()
    operator["+"] = Add()
    operator["*"] = Mul()
    def create_operator(self, ch):
        t = self.operator[ch] if ch in self.operator else Undef()
        return t

if __name__ == "__main__":
    a = int(input())
    b = int(input())
    op = input()
    factory = Factory()
    cal = factory.create_operator(op)
    cal.a = a
    cal.b = b
    print(cal.get_ans())

单例模式

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类 “类 (计算机科学)”)必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。

class Singleton:
    class __My_class:
        def __init__(self, arg):
            self.arg = arg

        def show(self):
            return (id(self), self.arg)

    _instance = None
    def __init__(self, arg):
        if not Singleton._instance:
            Singleton._instance = Singleton.__My_class(arg)
        else:
            Singleton._instance.arg = arg
    def __getattr__(self, attr):
        return getattr(self._instance, attr)

if __name__ == "__main__":
    s1 = Singleton("bar")
    s2 = Singleton("zoo")
    print(s1.show())
    print(s2.show())

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 中的上下文管理

    当我们执行语句块前需要一些准备动作,在执行完成之后又需要执行一些收尾动作。比如:文件读写后需要关闭,数据库读写完毕后需要关闭连接,资源加锁解锁等情况。对于这种情...

    Ewdager
  • 二叉树的前中后序遍历

    Ewdager
  • Python 单链表实现&基础函数

    前两天面滴滴,被问到怎么判断两个链表是否相交,然后并不懂什么是单链表相交…就很尴尬。 赶紧复习一下单链表的知识。

    Ewdager
  • Day22psutil&图形界面

    psutil 用Python来编写脚本简化日常的运维工作是Python的一个重要用途。 在Python中获取系统信息的一个好办法是使用psutil这个第三方模...

    林清猫耳
  • python with魔法语句

    这个是with默认封装的好的一个魔法盒子,封装了__enter__和__exit__两个函数:

    py3study
  • 散列表结构 字典与集合

    散列表(Hash Table)结构是字典(Dictionary)和集合(Set)的一种实现方式。散列算法的作用是尽可能快地在数据结构中找到一个值。在散列表上插入...

    py3study
  • 最佳实践【二】从 0 开始,用 flask+mongodb 打造分布式服务器监控平台

    经过之前的学习 《 Python 系统资源信息获取工具,你用过没?》、《【一】从0开始,用flask+mongo打造分布式服务器监控平台》, 召唤师峡谷萌新 ...

    崔庆才
  • AlphaGo Zero你也来造一只,PyTorch实现五脏俱全| 附代码

    遥想当年,AlphaGo的Master版本,在完胜柯洁九段之后不久,就被后辈AlphaGo Zero (简称狗零) 击溃了。

    量子位
  • What?废柴, 模拟登陆,代码控制滑动验证真的很难吗?Are you kidding???

    在前边的python接口自动化的时候,我们由于博客园的登录机制的改变,没有用博客园的登录测试接口。那么博客园现在变成了滑动验证登录,而且现在绝大多数的登录都变成...

    北京-宏哥
  • Python实现堆栈

    堆栈是一个后进先出的数据结构,其工作方式就像一堆汽车排队进去一个死胡同里面,最先进去的一定是最后出来。

    一墨编程学习

扫码关注云+社区

领取腾讯云代金券