abstract_factory

来源:互联网 发布:js 获取http 的状态 编辑:程序博客网 时间:2024/05/21 10:04
#!/usr/bin/python# -*- coding: UTF-8 -*-# vim:set shiftwidth=2 tabstop=2 expandtab textwidth=79:import randomclass 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

0 0