会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
Python 全系列/第一阶段:Python入门/序列 4531楼
Python 全系列/第一阶段:Python入门/Python入门(动画版) 4533楼
Python 全系列/第一阶段:Python入门/编程基本概念 4535楼

'''使用工厂模式、单例模式实现如下需求:
(1) 电脑工厂类 ComputerFactory 用于生产电脑 Computer。工厂类使用单例模式,也就是说只能有一个工厂对象。
(2) 工厂类中可以生产各种品牌的电脑:联想、华硕、神舟
(3) 各种品牌的电脑使用继承实现:
(4) 父类是 Computer 类,定义了 calculate 方法
(5) 各品牌电脑类需要重写父类的 calculate'''

class ComputerFactory:  # 工厂模式、单例模式组合
    __obj = None  # 类属性,类内私有
    __init_flag = True

    def __new__(cls, *args, **kwargs):  # 单例模式新建,只新建一次
        if cls.__obj == None:
            cls.__obj = object.__new__(cls)
        return cls.__obj

    def __init__(self):  # 单例模式初始化,只初始化一次
        if ComputerFactory.__init_flag:
            print("模具初始化完成单例模式初始化,只初始化一次")
            ComputerFactory.__init_flag = False

    def creat_computer(self, brand):  # 工厂模式
        if brand == "联想":
            return Lenovo()  # 调用Lenovo类,需要传参
        elif brand == "华硕":
            return AUAS()
        elif brand == "神州":
            return HASEE()
        else:
            return print("未知品牌,无法创建!")

class Computer:  # 定义父类Computer
    def __init__(self, name):
        self.name = name

    def calculate(self):  # 定义父类Computer的calculate方法
        print("生产该电脑")


class Lenovo(Computer):  # 定义Levono类,继承父类Computer
    def __init__(self, name):  # 显式继承父类的构造函数
        Computer.__init__(self, name)

    def calculate(self):  # 重写calculate方法
        print('生产{0}'.format(self.name))


class AUAS(Computer):  # 定义AUAS类,继承父类Computer
    # 当子类与父类构造函数相同,默认继承
    def calculate(self):
        print('生产{0}'.format(self.name))


class HASEE(Computer):  # 定义HASEE类,继承父类Computer
    def calculate(self):
        print('生产{0}'.format(self.name))


# 子类AUAS类运行测试1
s1 = HASEE("小米")
s1.calculate()
print("--------------------------------------------------------")
# 组合模式运行测试2
c1 = ComputerFactory()
x1 = c1.creat_computer("华硕")
x2 = c1.creat_computer("神州")
x3 = c1.creat_computer("联想")
print(x1)
print(x2)
print(x3)
print("--------------------------------------------------------")
c2 = ComputerFactory()
print(c1)
print(c2)

运行报错是一个原因,第二是

s1 = HASEE("小米")

这行代码,给神舟传小米为什么海内输出结果;我对单例模式还有工厂模式看了好几遍。还是不懂

image.png

Python 全系列/第一阶段:Python入门/面向对象 4537楼

image.png

Python 全系列/第一阶段:Python入门/编程基本概念 4538楼
Python 全系列/第一阶段:Python入门/编程基本概念 4539楼
Python 全系列/第一阶段:Python入门/编程基本概念 4540楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637