1.子類 class, 工廠子類class, 調用工廠class 2.子類須要抽象類定義子類模式, 工廠類須要定義抽象類規範模式。 每個工廠類管理 管理類管理工廠類。 3.應用:最複雜的模式:一個接口有不少的調用實例, 調用實例能夠分爲不一樣狀況,不> > 同的工廠進行管理。4.總起來看,出口要簡潔統一,內部分別管理。dom
class類的功能要單一,每一個只作一種功能,管理一類數據,定義class要不怕>多,經過上級管理起來
5.提高:全部的子class,工廠class,須要定義抽象類,規範格式。code
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)