设计模式之单例模式

设计模式

在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)

posted @ 2022-04-12 15:36  顺溜_7  阅读(61)  评论(0)    收藏  举报