''' 使用工厂模式、单例模式实现如下需求: (1) 电脑工厂类 ComputerFactory 用于生产电脑 Computer。工厂类使用单例模式,也就是说只能有一个工厂对象。 (2) 工厂类中可以生产各种品牌的电脑:联想、华硕、神舟 (3) 各种品牌的电脑使用继承实现: (4) 父类是 Computer 类,定义了 calculate 方法 (5) 各品牌电脑类需要重写父类的 calculate ''' class ComputerFactory: __obj = None __init_flag = True def create_computer(self,brand): if brand == "联想": return Lenovo() elif brand == "华硕": return Asus() elif brand == "神舟": return Hasee() else: return "未知品牌,无法创建" def __new__(cls, *args, **kwargs): if cls.__obj == None: #当前的类对象cls下的类属性是否为空 cls.__obj = object.__new__(cls) return cls.__obj def __init__(self): if ComputerFactory.__init_flag: #等于if MySingleton.__init_flag == True print("init ComputerFactory...") ComputerFactory.__init_flag = False #保证了只调用1次初始化 class Computer: def calculate(self): print("生产电脑啦!") class Lenovo(Computer): #联想 def calculate(self): print("生产联想电脑啦!") class Asus(Computer): #华硕 def calculate(self): print("生产华硕电脑啦!") class Hasee(Computer): #神舟 def calculate(self): print("生产神舟电脑啦!") factory = ComputerFactory() c1 = factory.create_computer("联想") print(c1.calculate()) factory2 = ComputerFactory() c2 = factory2.create_computer("华硕") print(c2.calculate())
老师,请问一下:
1、运行图(如上显示)里的None是哪里来的
2、单例模式这个还是有点不太理解为什么要这么写(如下显示)