设计模式-抽象工厂模式
2022/7/2 23:25:07
本文主要是介绍设计模式-抽象工厂模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
内容:定义一个工厂类接口,让工厂子类来创建一系列相关或者相互依赖的对象
例如:生产一部手机你,需要手机壳、CPU、操作系统三类对象来进行组装,其中每类对象都有不同的种类。对每个具体工厂,分别生产一部手机需要的三个对象
相比工厂方法模式,抽象工厂模式的每个具体工厂都生产一套产品
from abc import ABCMeta, abstractclassmethod
# 定义三个接口 class Cpu(metaclass=ABCMeta): @abstractclassmethod def show_cpu(self): pass class Os(metaclass=ABCMeta): @abstractclassmethod def show_os(self): pass class PhoneCase(metaclass=ABCMeta): @abstractclassmethod def show_phonecase(self): pass class XiaoLongCpu(Cpu): def show_cpu(self): print('骁龙cpu') class InterCpu(Cpu): def show_cpu(self): print('英特尔cpu') class AndroidOs(Os): def show_os(self): print("安卓系统") class IosOs(Os): def show_os(self): print("苹果系统") class BigPhoneCase(PhoneCase): def show_phonecase(self): print("大手机壳") class MidPhoneCase(PhoneCase): def show_phonecase(self): print("中等机壳") class SmallPhoneCase(PhoneCase): def show_phonecase(self): print("小型手机壳") # 定义一个接口,手机工厂,初步定义手机需要的对象 class PhoneFactory(metaclass=ABCMeta): @abstractclassmethod def make_os(self): pass @abstractclassmethod def make_cpu(self): pass @abstractclassmethod def make_phonecase(self): pass class HuaweiPhoneFactory(PhoneFactory): def make_os(self): return AndroidOs() def make_cpu(self): return XiaoLongCpu() def make_phonecase(self): return BigPhoneCase() class IPhoneFactory(PhoneFactory): def make_os(self): return IosOs() def make_cpu(self): return InterCpu() def make_phonecase(self): return SmallPhoneCase() class Phone(): def __init__(self, cpu, os, phonecase): self.cpu = cpu self.os = os self.phonecase = phonecase def show_info(self): self.cpu.show_cpu() self.os.show_os() self.phonecase.show_phonecase() def make_phone(factory): cpu = factory().make_cpu() os = factory().make_os() phonecase = factory().make_phonecase() return Phone(cpu, os, phonecase) make_phone(HuaweiPhoneFactory).show_info() make_phone(IPhoneFactory).show_info()
角色
抽象工厂角色 PhoneFactory
具体工厂角色 HuaweiPhoneFactory IPhoneFactory
抽奖产品角色 Cpu Os PhoneCase
具体产品角色 AndroidOs IosOs
客户端
这篇关于设计模式-抽象工厂模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行
- 2024-05-08阿里云域名注册流程,分享给第一次购买域名的新手站长!