设计模式之单例模式
设计模式
在IT行业中设计模式共有23种
可以分为三大类:
- 创建型
- 结构型
- 行为型
设计模式之单例模式
含义
单例模式:一个类只能产生一个对象,用于节省资源
应用场景
有一个类中有很多非常牛逼的绑定给对象的方法,我们需要在很多地方使用它,那么不同的程序员来用但是不知道有没有产生对象,所以自己会创建一个新对象,如此往复则会造成资源的浪费
我们需要在类实例化对象的时候进行干涉
编写方式
class Single(type): new_obj = None def __call__(self, *args, **kwargs): if not self.new_obj: obj = super().__call__(*args, **kwargs) self.new_obj = obj return self.new_obj return self.new_obj class MyClass(metaclass=Single): def __init__(self, name): self.name = name obj1 = MyClass('jason') obj2 = MyClass('tony') print(id(obj1), id(obj2)) print(obj1.__dict__,obj2.__dict__)
单例模式的实现方式不固定,有很多种:
https://www.cnblogs.com/Dominic-Ji/p/10525994.html
pickle模块
将该模块的目的仅仅是为了在选课系统中使用,并且该模块只支持python
需求:将对象保存到文件,并且取出来之后还可以使用对象的功能
import pickle class MyClass(object): school = 'school' def __init__(self, name): self.name = name def choose_course(self): print('%s正在选课'%self.name) obj = MyClass('jason') print(obj.school) obj.choose_course()
pockle模块也可以:
# with open(r'%s'%obj.name,'wb') as f: # pickle.dump(obj, f) with open(r'jason','rb') as f: data = pickle.load(f) print(data) print(data.name) print(data.school)

浙公网安备 33010602011771号