抽象工厂能给一套零件做出限制。【必须成套!!比如AppleCpu+IOS+shell/高通+安卓+shell】

# -*- encoding: utf-8 -*-
"""
@File    : abs_fac.py
@Time    : 2021-10-21 16:17
@Author  : XD
@Email   : gudianpai@qq.com
@Software: PyCharm
"""
from abc import abstractmethod, ABCMeta#---抽象产品---
class PhoneShell(metaclass = ABCMeta):@abstractmethoddef show_shell(self):passclass CPU(metaclass = ABCMeta):@abstractmethoddef show_cpu(self):passclass OS(metaclass = ABCMeta):@abstractmethoddef show_os(self):pass#---抽象工厂---
class PhoneFactory(metaclass = ABCMeta):@abstractmethoddef make_shell(self):pass@abstractmethoddef make_os(self):pass@abstractmethoddef make_cpu(self):pass#---具体产品---
#手机壳
class SmallShell(PhoneShell):def show_shell(self):print("普通手机小手机壳")class BigShell(PhoneShell):def show_shell(self):print("普通手机大手机壳")class AppleShell(PhoneShell):def show_shell(self):print("苹果手机壳")
#CPU
class SnapDragonCPU(CPU):def show_cpu(self):print("骁龙CPU")class MediaTekCPU(CPU):def show_cpu(self):print("联发科CPU")class AppleCPU(CPU):def show_cpu(self):print("苹果CPU")
#OS
class Android(OS):def show_os(self):print("Android系统")class IOS(OS):def show_os(self):print("IOS系统")#具体工厂
class MiFactory(PhoneFactory):def make_os(self):return Android()def make_cpu(self):return SnapDragonCPU()def make_shell(self):return BigShell()class HuaWeiFactory(PhoneFactory):def make_os(self):return Android()def make_cpu(self):return MediaTekCPU()def make_shell(self):return BigShell()class AppleFactory(PhoneFactory):def make_shell(self):return AppleShell()def make_os(self):return IOS()def make_cpu(self):return AppleCPU()
#---客户端---
class Phone:def __init__(self, cpu, os, shell):self.cpu = cpuself.os = osself.shell = shelldef show_info(self):print("手机信息")self.cpu.show_cpu()self.os.show_os()self.shell.show_shell()def make_phone(factory):cpu = factory.make_cpu()os = factory.make_os()shell = factory.make_shell()return Phone(cpu,os,shell)p1 = make_phone(HuaWeiFactory())
p1.show_info()
print("-----")
p2 = make_phone(AppleFactory())
p2.show_info()
手机信息
联发科CPU
Android系统
普通手机大手机壳
-----
手机信息
苹果CPU
IOS系统
苹果手机壳

设计模式004:抽象工厂模式相关推荐

  1. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

  2. 设计模式三—抽象工厂模式

    设计模式三-抽象工厂模式 一.定义 抽象工厂模式是工厂方法模式的进一步抽象.如果产品簇中只有一种产品,则退化为工厂方法模式. 二.原理图 三.代码实例 * 苹果和土豆是园丁1的杰作 * 葡萄和西红柿是 ...

  3. 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern)

    原文:乐在其中设计模式(C#) - 抽象工厂模式(Abstract Factory Pattern) [索引页] [源码下载] 乐在其中设计模式(C#) - 抽象工厂模式(Abstract Facto ...

  4. 设计模式复习-抽象工厂模式

    设计模式复习-抽象工厂模式 有两种硬件,PC和Phone,有两种系统,Windows和Linux,现在假设PC和Phone上全都能安装这两个系统,并且将来硬件不会在变化,但是系统可能需要扩展,比如扩展 ...

  5. 设计模式之四(抽象工厂模式第三回合)

    原文:设计模式之四(抽象工厂模式第三回合) 前言 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 抽象工厂模式最大的好处便是易于交换产品系列,由于具体工厂类,例如I ...

  6. python抽象工厂模式_Python设计模式之抽象工厂模式

    Python设计模式之抽象工厂模式 这篇文章主要为大家详细介绍了Python设计模式之抽象工厂模式,感兴趣的小伙伴们可以参考一下 python面向对象编程入门,我们需要不断学习进步 "&qu ...

  7. 设计模式-04抽象工厂模式

    设计模式-04抽象工厂模式 文章中涉及到的代码,请自行下载 https://gitee.com/pan_xiao_lei123/designmode.git 前面介绍的工厂方法模式中考虑的是一类产品的 ...

  8. C#设计模式(4)——抽象工厂模式

    C#设计模式(4)--抽象工厂模式 一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码),而工厂方法 ...

  9. 设计模式之抽象工厂模式(Abstract Factory)摘录

    面向对象系统的分析和设计实际上追求的就是两点:高内聚(Cohesion)和低耦合(Coupling). 23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.Fa ...

  10. java 工厂模式的写法_Java23种设计模式之抽象工厂模式

    概述 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...

最新文章

  1. UITextField 详解
  2. 我把梦打开,只为你进来
  3. 微信小程序开发实战(三)自定义UI样式---增加减少按钮
  4. 2020年第十八届西电程序设计竞赛网络预选赛之Problem C 没人比我更懂 COVID-19
  5. 线程魔术技巧:Java线程可以做的5件事
  6. java if,if...else...的应用
  7. vsftpd的主配置文件是什么linux,vsftpd.conf配置文件详解
  8. 7教程统计意义_学渣的医学统计学自救笔记(一)
  9. matlab注释的方法
  10. 【JS跨域取XML】之——借助AS的URLLoader
  11. linux多播 多个接收方,在同一端口上接收多个多播源 – C,Linux
  12. ROST情感分析的语法规则_《自然语言处理入门》12.依存句法分析--提取用户评论...
  13. 谷歌翻译插件安装使用
  14. 【C语言】指针进阶第五站,函数指针
  15. PHP获取身份证年龄和性别
  16. 西奥电梯服务器故障维修,干货│西奥电梯故障分析和技术文件
  17. HEVC学习(二十八) —— 量化之二
  18. 曾仕强《领导的沟通艺术》
  19. ARM基础(5) ARM通讯接口
  20. 【翻译】通过GSoC、GSoD、LFX和Outreachy来庆祝CNCF实习的成功五周年

热门文章

  1. Python学习笔记:字典(dict)
  2. 【BZOJ1923】外星千足虫,高斯消元解xor方程组
  3. bzoj4517 [Sdoi2016]排列计数 组合数+错排
  4. 2017.10.25 打鼹鼠 思考记录
  5. 2017.3.3 双栈排序 失败总结
  6. 数值分析 python_数值分析python代码
  7. 时间复杂度-线性对数时间nlogn的一些研究
  8. python在json文件中查找指定数据_Python中json的取值 如何使用python提取json中指定字段的数据...
  9. IOS应用程序发布到苹果APP STORE完整流程使用教程
  10. RFC2616-HTTP1.1-Methods(方法规定部分—单词注释版)