单类模式

Posted wangxiongbing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单类模式相关的知识,希望对你有一定的参考价值。

例子为办公室人员共用同一台打印机的模式
class Manager:
# 使用打印机上传要打印的信息
def use_painter(self, info, pr):
pr.add_task(info)

class Staff:
# 使用打印机上传要打印的信息
def use_painter(self, info, pr):
pr.add_task(info)

class Potiner:
#创建一个打印机类,并用两个类变量来控制 __new__和__init__方法
__stance = None
__is_init = False
  
  重写一个__new__方法,并创建一个单类模式
def __new__(cls, *args, **kwargs):
if cls.__stance is None:
cls.__stance = object.__new__(cls)
return cls.__stance

  #让程序调用时只初始化一次self.get_list
def __init__(self):
print("1111111")
if Potiner.__is_init is False:
print("-----------")
self.get_list = []
Potiner.__is_init = True
  #打印方法
def add_task(self, info):
# Potiner.list_print(info)
self.get_list.append(info)
  #打印数据
def get_print(self):
print(self.get_list)

# A员工
pr1 = Potiner()
m1 = Manager()
m1.use_painter("hello", pr1)

# B员工
pr2 = Potiner()
str1 = Staff()
str1.use_painter("python", pr2)
# C员工
pr = Potiner()
pr.get_print()

print(id(pr1))
print(id(pr2))
print(id(pr))























































以上是关于单类模式的主要内容,如果未能解决你的问题,请参考以下文章

java===单类设计模式之饿汉式与懒汉式

设计模式之责任链模式

单例模式

具有两个数据库的单类

使用迁移学习的单类数据集进行图像分类

使用迁移学习对单类数据集进行图像分类[关闭]