Python设计模式----2.工厂模式
工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题
首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
工厂方法模式的对简单工厂模式进行了抽象。
有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。
在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
代码:
"""设计模式--工厂模式"""
class A():
'''工厂类'''
def __init__(self):
self.classname = '工厂类' class A1(A):
def run(self):
print(self.classname + '-- this is A1') class A2(A):
def run(self):
print(self.classname + '-- this is A2') class B():
'''接口基类'''
def create(self):
'''把要创建的工厂对象装配进来'''
raise NotImplementedError class B1(B):
def create(self):
return A1() class B2(B):
def create(self):
return A2() B1().create().run()
B2().create().run()
结果:
工厂类-- this is A1
工厂类-- this is A2
Python设计模式----2.工厂模式的更多相关文章
- python  设计模式之工厂模式 Factory Pattern (简单工厂模式,工厂方法模式,抽象工厂模式)
		十一回了趟老家,十一前工作一大堆忙成了狗,十一回来后又积累了一大堆又 忙成了狗,今天刚好抽了一点空开始写工厂方法模式 我看了<Head First 设计模式>P109--P133 这25页 ... 
- Python: 设计模式 之 工厂模式例(2)(神奇的Python)
		#!/usr/bin/env python #coding=utf-8 # # 工厂模式第二例(神奇的Python) # 版权所有 2014 yao_yu (http://blog.csdn.net/ ... 
- Python: 设计模式 之 工厂模式例(1)
		#!/usr/bin/env python #coding=utf-8 # # 工厂模式一例 # 版权所有 2014 yao_yu (http://blog.csdn.net/yao_yu_126) ... 
- python设计模式之工厂模式
		一.理解工厂模式 在面向对象编程中,术语“工厂”表示一个负责创建替他类型对象的类.通常情况下,作为一个工厂的类有一个对象以及与它关联的多个方法.客户端使用某些参数调用此方法,之后,工厂会据此创建所需类 ... 
- Python 设计模式--简单工厂模式
		简单工厂模式(Factory Pattern)是一种创建型的设计模式,像工厂一样根据要求生产对象实例. 特点:根据不同的条件,工厂实例化出合适的对象. <大话设计模式>中实例:四则运算计算 ... 
- 浅谈Python设计模式 - 抽象工厂模式
		声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在上一篇我们对工厂模式中的普通工厂模式有了一定的了解,其实抽象工作就是 表示针对 ... 
- 大话设计模式Python实现- 抽象工厂模式
		抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类 下面是一个抽象工厂的demo: #!/usr/bin/env pyth ... 
- python设计模式之建造者模式
		python设计模式之建造者模式  建造者模式的适用范围:想要创建一个由多个部分组成的对象,而且它的构成需要一步接一步的完成.只有当各个部分都完成了,这个对象才完整.建造者模式表现为复杂对象的创建与 ... 
- 设计模式——抽象工厂模式及java实现
		设计模式--抽象工厂模式及java实现 设计模式在大型软件工程中很重要,软件工程中采用了优秀的设计模式有利于代码维护,方便日后更改和添加功能. 设计模式有很多,而且也随着时间在不断增多,其中最著名的是 ... 
- 5. 星际争霸之php设计模式--抽象工厂模式
		题记==============================================================================本php设计模式专辑来源于博客(jymo ... 
随机推荐
- 【Azure 环境】如果Azure中的某一个资源被删除后是否可以查看到删除的记录呢?如Resource Group
			问题描述 当一个资源从Azure中删除后,是否有地方可以查看到这些操作的记录呢?如操作人,操作时间等. 问题解答 可以的.通过 Azure订阅页面的活动日志,可以查看所有对订阅下资源的操作记录,包含D ... 
- Java    //使用scanner从键盘输入多种类型
			1 //1.引入包名 import java.util.Scanner 2 //2.新建Scanner对象 3 Scanner scan = new Scanner(system.in); 4 //3 ... 
- Find The Multiple 题解
			Find The Multiple The long-lost Sunday is coming again, and the ACM Laboratory Elimination Competi ... 
- Mac根目录下无法创建文件或目录
			无法创建目录 最近小伙伴经常反馈Mac根目录下创建文件或目录一直失败,并且尝试了各种姿势. 常见错误如下: # 常见错误1, 直接创建目录 mkdir -p /test mkdir: /data: R ... 
- WAF和IPS的区别
			简介 Web应用防火墙WAF(Web Application Firewall)和入侵防御系统IPS(Intrusion Prevention System)是网络安全领域中常见的两种安全解决方案,它 ... 
- Spring Boot学习日记18
			JDBCTemplate execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修改.删除等语句:bat ... 
- Spring Boot学习日记16
			了解了MVC配置原理 Spring MVC Auto-configuration // Spring Boot为Spring MVC提供了自动配置,它可以很好地与大多数应用程序一起工作. Spring ... 
- django项目(博客一)
			一 项目开发流程 1.需求 分析架构师+产品经理+开发者组长 在跟客户谈需求之前,会大致先了解客户的需求,然后自己先设计一套比较好的方案 在跟客户沟通交流中引导客户往我们之前想好的方案上面靠 形成一个 ... 
- vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
			这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.是什么 权限是对特定资源的访问许可,所谓权限控制,也就是确保用户只能访问到被分配的资源 而前端权限归根结底是请求的发起权,请求的发起可 ... 
- 记录--没有await,如何处理“回调地狱”
			这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 太长不看 不要嵌套使用函数.给每个函数命名并把他们放在你代码的顶层 利用函数提升.先使用后声明. 处理每一个异常 编写可以复用的函数,并把 ... 
