前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常见设计模式 Python 实现

常见设计模式 Python 实现

作者头像
Ewdager
发布2020-07-14 14:25:30
3500
发布2020-07-14 14:25:30
举报
文章被收录于专栏:Gvoidy备份小站Gvoidy备份小站

简单工厂模式

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

代码语言:javascript
复制
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())

单例模式

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

代码语言:javascript
复制
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())
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简单工厂模式
  • 单例模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档