python面向对象之抽象工厂设计模式
class truck:
def use(self):
return "拉货"
def __str__(self):
return "大卡车" class minicar: def use(self):
return "带妹兜风"
def __str__(self):
return "小轿车" # 定义一个大卡车工厂,作用是创建对象
class truck_factory():
def makecar(self):
return truck()
def makewheel(self):
return "生产大轮子" # 定义一个小汽车工厂
class car_factory():
def makecar(self):
return minicar()
def makewheel(self):
return "生产小轮子" # 定义一个方法用于调用工厂类生产相关的对象产品
def Factorys():
#也可以在工厂列表中再添加工厂类
factory = [car_factory(),truck_factory()]
# 此处我选择了car_factory工厂进行对象的创建
return factory[0] #定义一个“商店”类,类中创建方法用于展示“商品”对象。
class carstop:
def __init__(self,factory = None):
self.Factorys = factory def showcar(self):
car = self.Factorys.makecar()
wheel = self.Factorys.makewheel()
print("*"*25)
print("我是一辆%s" % (car))
print("我能用%s%s" %(car,car.use()))
print("%s 工厂也能够 %s"%(car,wheel))
print("*"*25) # 实现对象调用
if __name__ =="__main__":
carstop(Factorys()).showcar() 程序运行结果如下:
*************************
我是一辆小轿车
我能用小轿车带妹兜风
小轿车 工厂也能够 生产小轮子
************************* 抽象工厂模式之我见:
1.适合用在面向对象编程时,在创建一系列函数方法不确定,对象类型不确定时。
2.抽象工厂模型创建的对象没有个性,即生产的对象没有属性。若要添加属性,对其进行实例化。
3.抽象工厂模式非常灵活,可以再进行扩展,生产不同种类的对象,创建各种方法,即添加“工厂”类,再定义函数。
python面向对象之抽象工厂设计模式的更多相关文章
- 使用C# (.NET Core) 实现抽象工厂设计模式 (Abstract Pattern)
本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/p/8760250.html, 使用的是披萨店的例子. 文 ...
- C#--抽象工厂设计模式原理
C#--抽象工厂设计模式原理 C#--抽象工厂设计模式--三层框架 C#--使用反射改进简单工厂
- 用C# (.NET Core) 实现抽象工厂设计模式
用C# (.NET Core) 实现抽象工厂设计模式 本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/ ...
- 面向对象设计——抽象工厂(Abstract Factory)模式
定义 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类.抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么.这样一来,客户就能从具体的产 ...
- python风格的抽象工厂模式
抽象工厂模式: 提供一个接口,用户创建多个相关或依赖对象,而不需要指定具体类. 原则: 依赖抽象,不依赖具体类. 实例: 用不同原材料制作不同口味的披萨,创建不同原材料的工厂,不同实体店做出口味不同的 ...
- Python—程序设计:抽象工厂模式
抽象工厂模式 内容:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象. 例:生产一部手机,需要手机壳.CPU.操作系统三类对象进行组装,其中每类对象都有不同的种类.对每个具体工厂,分别生 ...
- c# 抽象工厂设计模式
- 面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)
今天是设计模式的第二讲,抽象工厂的设计模式,我们还是延续老办法,一步一步的.演变的来讲,先来看看一个对象创建的问题. 1.如何创建一个对象 常规的对象创建方法: 这样的创建对象没有任何问题, ...
- iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下 ...
随机推荐
- python爬虫——web前端基础(4)
CSS,指层叠样式表,用来定义如何显示HTML元素,一般和HTML配合使用. 在HTML中使用CSS样式的方法: 内联样式表:CSS代码直接写在现有的HTML标记中,直接使用style属性改变样式.例 ...
- C 语言实例 - 判断奇数/偶数
C 语言实例 - 判断奇数/偶数 C 语言实例 C 语言实例 以下实例判断用户输入的整数是奇数还是偶数. 实例 #include <stdio.h> int main() { int nu ...
- qBittorrent+Flex搭建在线视频播放网站
BT下载工具qbittorrent(当然这里也有其他类似的工具可选如transmission等) 首先安装EPEL源: yum -y install epel-release 安装开发工具包: yum ...
- 题解 P1854 花店橱窗布置
把二维压成一维的DP了解一下... 传送门 (以纪念神经兮兮调了两天的一维DP(刷水题谋财害命)以及感谢学长的帮助@ydnhaha) 显然我们有二维的dp:f[i][j]代表第i盆花放到第j个位置 ; ...
- Java中List,Set和Map详解及其区别和使用场景(转)
https://www.cnblogs.com/EasonJim/p/7967138.html
- 安装Jaspersoft Studio
下载位置:http://community.jaspersoft.com/project/jaspersoft-studio/releases.
- fiddler手机抓包,支持前端代码调试
手机用fiddler抓包 电脑最好是笔记本,这样能和手机保持统一局域网内:其他不多说,直接说步骤了. 一.对PC(笔记本)参数进行配置 1. 配置fiddler允许监听到https(fiddle ...
- MariaDB 实现主从复制
實驗目的: MariaDB為MySQL的一個分支,其完全開源.無版權之虞且操作上與 MySQL 一脈相承,實際應用中非常廣泛,軟件本身很小,安裝容易,使用簡單. 但其也有缺點,指令行方式操作,無原生G ...
- java http的get,post请求
初学可用F12查看任意网页帮助理解 package httpTest: import java.io.BufferedReader; import java.io.IOException;import ...
- 【Unity3D】实现太阳系
实践要求:写一个程序,实现一个完整的太阳系,其他星球围绕太阳的转速必须不一样,并且不再一个法平面内. 法平面是指过空间曲线的切点,且与切线垂直的平面.要求不在一个法平面内,则在保证所有行星以及太阳在一 ...