美文网首页
Python-Python实现单例模式

Python-Python实现单例模式

作者: yunpiao | 来源:发表于2018-07-21 17:07 被阅读0次

面试官问我, 听说过单例模式吗,我说听说过, 然后说让我写下Python的单例模式。然后我就懵逼了。 之前看过, 因为没有记录, 忘的嘎嘣脆。。。

Python中一切皆对象。

最简单的单例模式

class Class_A(object):
    print("single_model")
    
def single_instance():
    return Class_A

print(id(single_instance()))
print(id(single_instance()))
single_model
94873513761768
94873513761768

正规的单例模式

class Singleton(object):
    _instance = None
    def __new__(self, *args, **kwargs):
        if self._instance is None:
            self._instance = object.__new__(self, *args, **kwargs)

        return self._instance

s1 = Singleton()
s2 = Singleton()
print(id(s1))
print(id(s2))

139693198402056
139693198402056

工厂模式

class Fruit(object):
    def __init__(self):
        pass

    def print_color(self):
        print("I do not know!")

class Apple(Fruit):
    def __init__(self):
        pass

    def print_color(self):
        print("apple is in red")

class Orange(Fruit):
    def __init__(self):
        pass

    def print_color(self):
        print("orange is in orange")

class FruitFactory(object):
    fruits = {"apple": Apple, "orange": Orange}

    def __new__(self, name):
        if name in self.fruits.keys():
            print(name)
            return self.fruits[name]()
        else:
            return Fruit()
        
fruit1 = FruitFactory("apple")
fruit2 = FruitFactory("orange")
fruit3 = FruitFactory("fruit")

fruit1.print_color()    
fruit2.print_color()    
fruit3.print_color()    
apple
orange
apple is in red
orange is in orange
I do not know!

总结, 一直一来都没有好好总结用过的知识, 结果现在忘性越来越大,以后要保持每天一篇文章。(😏水也要水一篇)

相关文章

  • Python-Python实现单例模式

    面试官问我, 听说过单例模式吗,我说听说过, 然后说让我写下Python的单例模式。然后我就懵逼了。 之前看过, ...

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • python面试题-2018.1.30

    问题:如何实现单例模式? 通过new方法来实现单例模式。 变体: 通过装饰器来实现单例模式 通过元类来创建单例模式...

  • 单例模式

    一、实现单例模式 或者 二、透明的单例模式 三、用代理实现单例模式 四、JavaScript中的单例模式 在Jav...

  • 单例模式和GCD单例实现

    1、传统单例模式2、GCD单例模式3、用宏实现GCD单例模式4、用宏实现GCD单例模式,名称随类名变化而变化 单例...

  • kotlin实现单例模式

    1.懒汉式实现单例模式 2.线程安全懒汉式实现单例模式 3.双重校验懒汉式实现单例模式 4.静态内部类方式实现单例模式

  • 单例模式之枚举类enum

    通过枚举实现单例模式 枚举类实现单例模式的优点 对于饿汉式单例模式和懒汉式单例模式了解的同学,使用以上两种单例模式...

  • 单例模式

    单例模式及C++实现代码单例模式4种实现详解 c++11改进我们的模式之改进单例模式 单例模式(Singleton...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

  • iOS 单例

    单例模式实现不能使用继承 定义单例实现 简写 定义单例实现宏

网友评论

      本文标题:Python-Python实现单例模式

      本文链接:https://www.haomeiwen.com/subject/jruhmftx.html