单例模式(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 判断 对于代码维护性增加了难度 如果使用策略类的情况 代码的可读性增加了不少