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面向对象之抽象工厂设计模式的更多相关文章

  1. 使用C# (.NET Core) 实现抽象工厂设计模式 (Abstract Pattern)

    本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/p/8760250.html, 使用的是披萨店的例子. 文 ...

  2. C#--抽象工厂设计模式原理

    C#--抽象工厂设计模式原理 C#--抽象工厂设计模式--三层框架 C#--使用反射改进简单工厂

  3. 用C# (.NET Core) 实现抽象工厂设计模式

    用C# (.NET Core) 实现抽象工厂设计模式   本文的概念性内容来自深入浅出设计模式一书. 上一篇文章讲了简单工厂和工厂方法设计模式 http://www.cnblogs.com/cgzl/ ...

  4. 面向对象设计——抽象工厂(Abstract Factory)模式

    定义 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类.抽象工厂允许客户使用抽象的接口来创建一组相关的产品,而不需要知道或关心实际产出的具体产品是什么.这样一来,客户就能从具体的产 ...

  5. python风格的抽象工厂模式

    抽象工厂模式: 提供一个接口,用户创建多个相关或依赖对象,而不需要指定具体类. 原则: 依赖抽象,不依赖具体类. 实例: 用不同原材料制作不同口味的披萨,创建不同原材料的工厂,不同实体店做出口味不同的 ...

  6. Python—程序设计:抽象工厂模式

    抽象工厂模式 内容:定义一个工厂类接口,让工厂子类来创建一系列相关或相互依赖的对象. 例:生产一部手机,需要手机壳.CPU.操作系统三类对象进行组装,其中每类对象都有不同的种类.对每个具体工厂,分别生 ...

  7. c# 抽象工厂设计模式

  8. 面向对象设计模式纵横谈:Abstract Factory 抽象工厂模式(笔记记录)

         今天是设计模式的第二讲,抽象工厂的设计模式,我们还是延续老办法,一步一步的.演变的来讲,先来看看一个对象创建的问题. 1.如何创建一个对象 常规的对象创建方法: 这样的创建对象没有任何问题, ...

  9. iOS常用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

    1. 简单工厂模式 如何理解简单工厂,工厂方法, 抽象工厂三种设计模式? 简单工厂方法包含:父类拥有共同基础接口,具体子类实现子类特殊功能,工厂类根据参数区分创建不同子类实例.该场景对应的UML图如下 ...

随机推荐

  1. QDU第一届程序设计大赛——E到I题解法(非官方题解)

    题目链接https://qduoj.com/contest/28/problems,密码:qdu1230 E题: 思路:先进行排序,然后去暴力模拟就可以,但可能WA了几次,导致此题没解出来,有点可惜 ...

  2. jQuery基础(2)

    jQuery的属性操作,使用jQuery操作input的value值,jQuery的文档操作 零.昨日内容回顾 jQuery 宗旨:write less do more 就是js的库,它是javasc ...

  3. net core 2.0 web api + Identity Server 4 + angular 5

    net core 2.0 web api + Identity Server 4 + angular 5前台使用angular 5, 后台是asp.net core 2.0 web api + ide ...

  4. shell 发送Post请求,并获取状态码

    #!/bin/bash aa=$ result=$(curl -H "Content-type: application/json" -X POST -o /dev/null -s ...

  5. D. Statistics of Recompressing Videos

    D. Statistics of Recompressing Videos time limit per test 3 seconds memory limit per test 256 megaby ...

  6. 装饰者模式及php实现

    装饰模式(Decorator Pattern) : 动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活.其别名也可以称为包装器(Wr ...

  7. 《超实用的Node.js代码段》连载三:Node.js深受欢迎的六大原因

    <超实用的Node.js代码段>连载一:获取Buffer对象字节长度 <超实用的Node.js代码段>连载二:正确拼接Buffer Node.js是一种后起的优秀服务器编程语言 ...

  8. Java中super关键字的作用与用法

    Java中的super是什么?java中的super关键字是一个引用变量,用于引用父类对象.关键字“super”以继承的概念出现在类中.主要用于以下情况: 1.使用super与变量:当派生类和基类具有 ...

  9. WebView全面学习(二)-- Native与js双方通信

    WebView全面学习(二)-- Native与js双方通信 Native与js通信的本质 Native与js通信的核心在于WebView. 两端的通信主要还是单向的.假如要完成js->Nati ...

  10. Python3+selenium3环境搭建笔记

    系统:win7 64位浏览器:ie9 64位 chrome70 32位 firefox63 64位python版本:3.6.5 Windows x86 executable installersele ...