打印机案例, 办公室里多人使用同一打印机

# 打印机案例, 办公室里多人使用同一打印机


class Staff(object):
    """员工类"""
    def user_printer(self, info, pr):
        """
        使用打印机的方法
        :param info:需要打印的信息
        :param pr: 打印机对象
        :return: None
        """
        pr.add_task(info)


class Manager(Staff):
    """经理类"""
    pass


class Printer(object):
    """打印机类"""
    # 单例对象
    __instance = None
    # 打印队列
    __list_print_queue = list()

    def __new__(cls, *args, **kwargs):
        """将打印机类 设计成单例模式"""
        if cls.__instance is None:
            # 调用object类生成对象的方法
            cls.__instance = object.__new__(Printer)
        return cls.__instance

    def add_task(self, info):
        """
        添加打印任务到 打印队列中
        :param info: 需要打印的信息
        :return: None
        """
        Printer.__list_print_queue.append(info)

    def print_task(self):
        """模拟打印"""
        print(Printer.__list_print_queue)


def main():
    """主程序"""
    # 经理使用打印机
    manager1 = Manager()
    pr1 = Printer()
    manager1.user_printer("hello world", pr1)

    # 员工1 使用打印机
    worker1 = Staff()
    pr2 = Printer()
    worker1.user_printer("worker1 use printer", pr2)

    # 员工2 使用打印机
    worker2 = Staff()
    pr3 = Printer()
    worker2.user_printer("i'm worker2, i'm use printer", pr3)

    # 程序员查看打印机 打印情况
    pr4 = Printer()
    pr4.print_task()


if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.csdn.net/u010684603/article/details/107580827