聊聊python常见的设计模式

112 阅读1分钟

单例模式(Singleton)

什么时候需要单例模式

单例模式就是这个类只会实例化一次,在内存中只会存在一个类的实例化对象,所有的实例化的获取到的都是同一个内存对象,如果这个类占用内存比较大的话,单例模式能够节省不少内存。

实现的例子

class Singleton(object):
    """ 单例模式 """

    _instance = None

    @staticmethod
    def get_instance():
        if Singleton._instance:
            return Singleton._instance
        else:
            Singleton._instance = Singleton()
            return Singleton._instance


s = Singleton.get_instance()
print(s)
s1 = Singleton.get_instance()
print(s1)
s2 = Singleton.get_instance()
print(s2)

实质上三个对象都是内存中同一个实例对象

工厂模式(Factory)

什么时候需要工厂模式

根据不同的函数入参生成不同的实例化对象 工厂模式一定要包含一个超类 通过调用超类的方法来生成不同的子类对象

实现的例子

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


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


class AnimalFactory(object):

    def create_animal(self, _type):
        self.animal_name = "cat"
        if _type == "cat":
            cat = Cat()
            self.animal = cat
        elif _type == "dog":
            dog = Dog()
            self.animal = dog
        return self.animal

策略模式(Strategy)

不同于工厂类 工厂类会出现大量的if else 判断 对于代码维护性增加了难度 如果使用策略类的情况 代码的可读性增加了不少

观察者模式(Observer)