您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: