23种设计模式之python实现--抽象工厂
来源:互联网 发布:软件国产化 东方通 编辑:程序博客网 时间:2024/06/04 18:47
#理解#Abstract_Factory模式是Factory的扩展,#Factory用于生产一类产品而抽象工厂用于生产多个产品系列#例子:#两个工厂,一个生产狗玩具,一个生产猫玩具,而玩具共有两类一类机器玩具,一类毛绒玩具class Abstract_Factory: def __init__(self,factory=None): self.toy_factory=factoryclass cat_Factory(Abstract_Factory):#当然这里可以象Factory_Method使用查表 def create_soft_cat(self): return soft_cat_toy(); def create_machine_cat(self): return machine_cat_toy()class dog_Factory(Abstract_Factory): def create_soft_dog(self): return soft_dog_toy(); def create_machine_dog(self): return machine_dog_toy();class Abstract_Product_dog: def getname(self): pass def speak(self): print "wangwang"class soft_dog_toy(Abstract_Product_dog): def getname(self): return "soft dog toy"class machine_dog_toy(Abstract_Product_dog): def getname(self): return "machine dog toy" class Abstract_Product_cat: def getname(self): pass def speak(self): print "miaomiao"class soft_cat_toy(Abstract_Product_cat): def getname(self): return "soft cat toy"class machine_cat_toy(Abstract_Product_cat): def getname(self): return "machine cat toy"if __name__=="__main__": factory=Abstract_Factory(dog_Factory()); dog1=factory.toy_factory.create_soft_dog() dog1.speak() print dog1.getname() dog2=factory.toy_factory.create_machine_dog() dog2.speak() print dog2.getname() factory=Abstract_Factory(cat_Factory()) cat1=factory.toy_factory.create_soft_cat() cat1.speak() print cat1.getname() cat2=factory.toy_factory.create_machine_cat() cat2.speak() print cat2.getname()
运行结果,如图
0 0
- 23种设计模式之python实现--抽象工厂
- python设计模式之抽象工厂模式
- 23种设计模式之python实现--工厂方法
- 使用Object-C实现23种设计模式之抽象工厂模式
- 23种设计模式学习之东拼西凑-------抽象工厂模式
- 23种设计模式之抽象工厂模式
- 23种设计模式之抽象工厂模式2
- c++ 23种设计模式之抽象工厂模式
- 23种设计模式之抽象工厂模式
- 23种设计模式之抽象工厂模式
- 23种设计模式C++实例之抽象工厂模式
- Java 23种设计模式之抽象工厂模式详解
- 23种设计模式之——抽象工厂模式
- 23种设计模式之抽象工厂模式
- 23种设计模式之-抽象工厂模式
- Java 23种设计模式之抽象工厂模式
- 2010.5.23 设计模式之抽象工厂
- 24种设计模式之工厂模式--(抽象工厂)
- java学习记录5
- Java 序列化的高级认识
- linux系统 - linux下core文件设置
- 【UML入门教程】——总结和自我补充
- Java学习记录6
- 23种设计模式之python实现--抽象工厂
- 点发大幅度
- 数据结构之二叉树
- 如何成为一名黑客
- 黑马程序员__ ArrayList 与HashSet 去除重复函数的 区别 equals
- java中有几种方法可以实现一个线程
- 2014.4.1
- opencv 配置(vs2012)
- DFS——The Mine