1.子类 class, 工厂子类class, 调用工厂class 2.子类需要抽象类定义子类模式, 工厂类需要定义抽象类规范模式。 每一个工厂类管理 管理类管理工厂类。 3.应用:最复杂的模式:一个接口有很多的调用实例, 调用实例可以分为不同情况,不> > 同的工厂进行管理。
4.总起来看,出口要简洁统一,内部分别管理。
class类的功能要单一,每个只做一种功能,管理一类数据,定义class要不怕>多,通过
上级管理起来
5.提升:所有的子class,工厂class,需要定义抽象类,规范格式。
import random
"""
"""
class Dog:
def speak(self):
return 'whoof'
def __str__(self):
return 'dog'
class Cat:
def speak(self):
return 'meow'
def __str__(self):
return 'cat'
class DogFactory:
def get_pet(self):
return Dog()
def get_food(self):
return 'dog food'
class CatFactory:
def get_pet(self):
return Cat()
def get_food(self):
return 'cat food'
class PetFactory:
def __init__(self,pet_factory=None):
self.pet_factory=pet_factory
def show_pet(self):
pet=self.pet_factory.get_pet()
print("This is a lovely", pet)
print('speak ==>',pet.speak())
print('get_food==>',self.pet_factory.get_food())
# Show pets with various factories
def get_factory():
"""Let's be dynamic!"""
return random.choice([DogFactory, CatFactory])()
shop = PetFactory()
for i in range(3):
shop.pet_factory = get_factory()
shop.show_pet()
print("=" * 10)