abstract_factory
2015-10-09 21:50
225 查看
#!/usr/bin/python # -*- coding: UTF-8 -*- # vim:set shiftwidth=2 tabstop=2 expandtab textwidth=79: import random class PetShop(object): def __init__(self, animal_factory=None): self.pet_factory = animal_factory def show_pet(self): pet = self.pet_factory.get_pet() print 'we hava a lovely {}'.format(pet) print 'It says {}'.format(pet.speak()) print 'We also hava {}'.format(self.pet_factory.get_food()) class Dog(object): def speak(self): return 'woof' def __str__(self): return 'Dog' class Cat(object): def speak(self): return 'meow' def __str__(self): return 'Cat' class DogFactory(object): def get_pet(self): return Dog() def get_food(self): return 'dog food' class CatFactory(object): def get_pet(self): return Cat() def get_food(self): return 'cat food' def get_factory(): return random.choice([DogFactory, CatFactory])() for i in range(3): shop = PetShop(get_factory()) shop.show_pet() print '=' * 20
参考:
1、https://github.com/faif/python-patterns/blob/master/abstract_factory.py
2、http://blog.csdn.net/zhengzhb/article/details/7359385
相关文章推荐
- 例10-4 uva10791(唯一分解)
- 数据结构之栈的链式存储结构
- 例10-4 uva10791(唯一分解)
- VC++ .NET 动态加载DLL,使用反射方式Invoke委托调用
- Java线程:概念与原理(一)
- 关于UITableViewCell文字居中问题
- BZOJ2051 : A Problem For Fun
- C#高级篇(二)---LINQ、反射、线程
- 【hdu4427】【zoj3662】math magic 背包+厉害的优化
- ARM 体系 CPU 的 7 种工作模式 和 2 种工作状态
- Android-SlidingMenu-显示隐藏侧边栏
- (中等) CF 311B Cats Transport,斜率优化DP。
- LNMP内网部署wiki
- LeetCode-Move Zeroes
- 树形数组
- spring 注解配置bean
- 借助sass的Maps功能使得响应式代码更有条理
- 硬件校验和
- 第一次正式写博客哦
- poj2352