python设计模式-抽象工厂模式
问题:在上一篇 python设计模式:工厂方法模式我们尝试使用工厂方法创建了披萨店,现在为了保证披萨加盟店也能有良好的声誉,我们需要统一原材料,这个该如何做呢? 为了确保每家加盟店都是用高质量的原材料,我们打算建造一加原材料工厂,并将原材料运送到各个加盟店。每个加盟店会对原材料有不同的需求,这里我们就可以用上上一篇介绍的工厂方法模式了。 首先,建造原料工厂 然后建造区域的原料工厂(继承自原料工厂) 在区域的原料工厂中实现原料的创建方法。 将原料工厂组合起来,加入到 PizzaStore(上一篇中由工厂方法实现)代码中。 按照这个思路,我们先创建原料工厂 创建原料工厂 创建原料工厂的实现代码如下: # 原料 class FreshClams: def __str__(self): return 'Fresh Clams' class MarinaraSauce: def __str__(self): return "Marinara Sauce" class ThickCrustDough: def __str__(self): return "Thick Crust Dough" class ReggianoCheese: def __str__(self): return "Reggiano Cheese" class SlicedPepperoni: def __str__(self): return "Sliced Pepperoni" class Garlic: def __str__(self): return "Garlic" class Onion: def __str__(self): return "Onion" class RedPepper: def __str__(self): return "Red Pepper" # 披萨店原料工厂 class PizzaIngredientFactory: ''' 定义原料工厂 ''' def create_dough(self): raise NotImplementedError() def create_sauce(self): raise NotImplementedError() def create_cheese(self): raise NotImplementedError() def create_pepperoni(self): raise NotImplementedError() def create_clam(self): raise NotImplementedError() def create_veggies(self): raise NotImplementedError() 在这个工厂中,每个原料都是一个方法,原料的实现需要在具体的原料工厂中实现。 这里每个原料方法没有做任何工作,只是抛出了NotImplementedError 这样做是为了强制子类重新实现相应的方法,如果不重新实现用到时就会抛出 NotImplementedError。 ...