Python设计模式:抽象工厂模式
设计模式二:抽象工厂模式
什么是抽象工厂模式
抽象工厂模式是工厂方法模式的一种泛化。当应用许多工厂方法时,将创建一系列对象的过程合并在一起会更合理,此时便引入了抽象工厂。
优点
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设计模式:抽象工厂模式相关推荐
- python工厂模式 理解_浅谈Python设计模式 - 抽象工厂模式
声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在上一篇我们对工厂模式中的普通工厂模式有了一定的了解,其实抽象工作就是 表示针对 ...
- 系统架构技能之设计模式-抽象工厂模式
一.上篇回顾 上篇我们主要讲述了简单工厂模式和工厂模式.并且分析了每种模式的应用场景和一些优缺点,我们现在来回顾一下: 简单工厂模式:一个工厂负责所有类型对象的创建,不支持无缝的新增新的类型对象的创建 ...
- 常见设计模式—抽象工厂模式
设计模式-抽象工厂模式 1.什么是抽象工厂模式 抽象工厂模式是围绕一个超级工厂创建其它工厂,是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品. 2.角色分 ...
- 【JAVA进阶系列】JAVA 设计模式 -- 抽象工厂模式(Abstract Factory)
[JAVA进阶系列]JAVA 设计模式 -- 抽象工厂模式(Abstract Factory) [1.1]抽象工厂模式简介 抽象工厂者模式的类结构图 AbstractProduct(抽象产品),Abs ...
- python:水果与设计模式-抽象工厂模式
抽象工厂模式(Abstract Factory Pattern):属于创建型模式,它提供了一种创建对象的最佳方式.在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类,每个生成的 ...
- java设计模式---抽象工厂模式
工厂模式在项目中是常常用到的,有人说只有大项目才会用到,小项目是体会不出来.其实使用设计模式与项目的大小没有实质性的联系.设计模式是经验的总结而不是衡量项目大小的标准. 以开发项目的DAO层为例,在项 ...
- C++设计模式--抽象工厂模式
前言 前面有两篇文章分别介绍了简单工厂模式和工厂方法模式,这两种模式都比较常见,今天介绍工厂模式的最后一种,抽象工厂模式. 抽象工厂模式(Abstract Factory Pattern)是所有形态的 ...
- 05设计模式——抽象工厂模式
前言:以下总结来自龙哥---左潇龙博客. 总结的很到位,附上博客链接:http://www.cnblogs.com/zuoxiaolong/p/pattern6.html 抽象工厂模式算是工厂相关模式 ...
- [设计模式] ------ 抽象工厂模式
抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了. 其实就是相当于将创建哪个工厂的权利再次放给调用端. 调用端在调用的时 ...
- C++设计模式-抽象工厂模式
目录 基本概念 代码与实例 基本概念 抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,从而无需指定他们具体的类. 抽象工厂的好处: 1. 易于交换产品系列 ...
最新文章
- 垂直网站架构改造 - 怎样成为一个山寨CTO
- java SSM多操作注解回滚
- android studio x86虚拟机,Android studio在运行虚拟机的时候出现这种情况怎么办?
- UA OPTI512R 傅立叶光学导论8 多元脉冲函数
- 吴恩达机器学习(第五章)——Logistic回归
- PIE 支持项目介绍
- 更改Windows默认收藏夹路径我有三法
- [算法] 已知前序和中序遍历,建立二叉树
- maven的使用--初级篇
- 图书管理系统Java代码
- 软件质量 软件测试和质量保证
- 漫谈程序员系列 薪资 你是我不能言说的伤
- 淘宝卖家中心打开淘宝客推广网页空白
- 软件测试周刊(第48期):无聊是非常有必要的,一个人在空白时间所做的事,决定了这个人和其他人根本的不同。
- uni-app转小程序遇到的问题 (组件使用插槽的问题)(跨端兼容、条件编译)(小程序自定义胶囊按钮封装)(uni-app挂载原型链)
- 用c语言编写两个数的最小公倍数,用C语言编写程序求两个数的最小公倍数,并输出...
- 行业认证标准:如何达到DISA ASD STIG规范进行软件开发
- C++:匿名函数(Lambda函数)简介
- python爬取新冠状病毒实时数据,绘制各省份疫情地图
- rJava install error “JAVA_HOME cannot be determined from the Registry“
热门文章
- DP动态规划【专辑@AbandonZHANG】
- TensorFlow实现mnist手写数字识别项目代码
- tomcat7不支持html5吗,HTTP状态404说明请求的资源()不可用。的Apache Tomcat/7.0.27
- python复制图片文件_python批量复制图片到另一个文件夹
- Hough变换检测圆
- Windows系统下使用NSIS工具制作QT软件的安装包
- php7.2 加密,php 7.2 aes 128 ECB 加密
- 爱问et连接mysql,大厂爱问的MySQL事物问题,看这一篇就够了!
- java ef 引用问题_EF Core - 自引用实体
- SQLite之C++封装库CppSQLite使用方法