设计模式二:抽象工厂模式

什么是抽象工厂模式

抽象工厂模式是工厂方法模式的一种泛化。当应用许多工厂方法时,将创建一系列对象的过程合并在一起会更合理,此时便引入了抽象工厂。

优点

1.让对象的创建更容易追踪
2.对象创建与使用解耦
3.提供优化内存占用和应用性能的潜力
4.通过改变激活的工厂方法动态地改变应用行为(例如应用切换风格)

实例代码

class MP3:def __init__(self):self.machine = 'MP3'def __str__(self):return self.machinedef play(self,play_file):print('Use {} play the {} : {}'.format(self,play_file,play_file.getdata()))class music:def __str__(self):return 'lalalalala.mp3'def getdata(self):return 'lalalalala'class Listen_Factory:def __init__(self):print(self)def __str__(self):return '------Listen to the music ------'def make_machine(self):return MP3()def play_file(self):return music()class MP4:def __init__(self):self.machine = 'MP4'def __str__(self):return self.machinedef play(self,play_file):print('Use {} play the {} : {}'.format(self,play_file,play_file.getdata()))class movie:def __str__(self):return 'dididididi.mp4'def getdata(self):return 'dididididi'class Watch_Factory:def __init__(self):print(self)def __str__(self):return '------Watch a movie ------'def make_machine(self):return MP4()def play_file(self):return movie()class Relax_Factory:def __init__(self,choose):self.machine = choose.make_machine()self.play_file = choose.play_file()def play(self):self.machine.play(self.play_file)def main():print('Which one do you like?')print('1. Listen to music')print('2. Watch a movie')opt = input('Select the number\n')opt = int(opt)choose = Listen_Factory if opt ==1 else Watch_Factoryrelax = Relax_Factory(choose())relax.play()if __name__ == "__main__":main()

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

  1. python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在上一篇我们对工厂模式中的普通工厂模式有了一定的了解,其实抽象工作就是 表示针对 ...

  2. 系统架构技能之设计模式-抽象工厂模式

    一.上篇回顾 上篇我们主要讲述了简单工厂模式和工厂模式.并且分析了每种模式的应用场景和一些优缺点,我们现在来回顾一下: 简单工厂模式:一个工厂负责所有类型对象的创建,不支持无缝的新增新的类型对象的创建 ...

  3. 常见设计模式—抽象工厂模式

    设计模式-抽象工厂模式 1.什么是抽象工厂模式 抽象工厂模式是围绕一个超级工厂创建其它工厂,是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品. 2.角色分 ...

  4. 【JAVA进阶系列】JAVA 设计模式 -- 抽象工厂模式(Abstract Factory)

    [JAVA进阶系列]JAVA 设计模式 -- 抽象工厂模式(Abstract Factory) [1.1]抽象工厂模式简介 抽象工厂者模式的类结构图 AbstractProduct(抽象产品),Abs ...

  5. python:水果与设计模式-抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern):属于创建型模式,它提供了一种创建对象的最佳方式.在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类,每个生成的 ...

  6. java设计模式---抽象工厂模式

    工厂模式在项目中是常常用到的,有人说只有大项目才会用到,小项目是体会不出来.其实使用设计模式与项目的大小没有实质性的联系.设计模式是经验的总结而不是衡量项目大小的标准. 以开发项目的DAO层为例,在项 ...

  7. C++设计模式--抽象工厂模式

    前言 前面有两篇文章分别介绍了简单工厂模式和工厂方法模式,这两种模式都比较常见,今天介绍工厂模式的最后一种,抽象工厂模式. 抽象工厂模式(Abstract Factory Pattern)是所有形态的 ...

  8. 05设计模式——抽象工厂模式

    前言:以下总结来自龙哥---左潇龙博客. 总结的很到位,附上博客链接:http://www.cnblogs.com/zuoxiaolong/p/pattern6.html 抽象工厂模式算是工厂相关模式 ...

  9. [设计模式] ------ 抽象工厂模式

    抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了. 其实就是相当于将创建哪个工厂的权利再次放给调用端. 调用端在调用的时 ...

  10. C++设计模式-抽象工厂模式

    目录 基本概念 代码与实例 基本概念 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,从而无需指定他们具体的类. 抽象工厂的好处: 1. 易于交换产品系列 ...

最新文章

  1. 垂直网站架构改造 - 怎样成为一个山寨CTO
  2. java SSM多操作注解回滚
  3. android studio x86虚拟机,Android studio在运行虚拟机的时候出现这种情况怎么办?
  4. UA OPTI512R 傅立叶光学导论8 多元脉冲函数
  5. 吴恩达机器学习(第五章)——Logistic回归
  6. PIE 支持项目介绍
  7. 更改Windows默认收藏夹路径我有三法
  8. [算法] 已知前序和中序遍历,建立二叉树
  9. maven的使用--初级篇
  10. 图书管理系统Java代码
  11. 软件质量 软件测试和质量保证
  12. 漫谈程序员系列 薪资 你是我不能言说的伤
  13. 淘宝卖家中心打开淘宝客推广网页空白
  14. 软件测试周刊(第48期):无聊是非常有必要的,一个人在空白时间所做的事,决定了这个人和其他人根本的不同。
  15. uni-app转小程序遇到的问题 (组件使用插槽的问题)(跨端兼容、条件编译)(小程序自定义胶囊按钮封装)(uni-app挂载原型链)
  16. 用c语言编写两个数的最小公倍数,用C语言编写程序求两个数的最小公倍数,并输出...
  17. 行业认证标准:如何达到DISA ASD STIG规范进行软件开发
  18. C++:匿名函数(Lambda函数)简介
  19. python爬取新冠状病毒实时数据,绘制各省份疫情地图
  20. rJava install error “JAVA_HOME cannot be determined from the Registry“

热门文章

  1. DP动态规划【专辑@AbandonZHANG】
  2. TensorFlow实现mnist手写数字识别项目代码
  3. tomcat7不支持html5吗,HTTP状态404说明请求的资源()不可用。的Apache Tomcat/7.0.27
  4. python复制图片文件_python批量复制图片到另一个文件夹
  5. Hough变换检测圆
  6. Windows系统下使用NSIS工具制作QT软件的安装包
  7. php7.2 加密,php 7.2 aes 128 ECB 加密
  8. 爱问et连接mysql,大厂爱问的MySQL事物问题,看这一篇就够了!
  9. java ef 引用问题_EF Core - 自引用实体
  10. SQLite之C++封装库CppSQLite使用方法