zoukankan      html  css  js  c++  java
  • 单类模式

    
    
    例子为办公室人员共用同一台打印机的模式
    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))
    View Code


  • 相关阅读:
    sqlserver获取当前id的前一条数据和后一条数据
    C#实现测量程序运行时间及cpu使用时间
    类库dll引用不成功问题
    合并相同字段
    Android之来历
    XML and JSON 验证
    特殊符号
    git 使用
    格式化字符串:金额
    grunt + sass 使用记录
  • 原文地址:https://www.cnblogs.com/wangxiongbing/p/9901733.html
Copyright © 2011-2022 走看看