披萨

HeadFirst设计模式

笑着哭i 提交于 2019-12-04 07:13:49
HeadFirst设计模式 1策略模式 鸭子飞行和嘎嘎叫策略 2工厂模式 简单工厂简单的pizza工厂 通过一个工厂类的方法,创建和返回对象实例 原来混乱的代码: 修改后 简单工厂类图 Pizza店变成加盟店 在创建Pizza时将工厂传进去 想要多一些的质量控制,每个pizza店的工艺又不一样,有的先切再烤,有的先烤再切。 现在来看看Pizza店的多态。 将变化的东西移到低层(实现,子类),抽象的共性移到高层(超类或接口) 这边把Pizza的工艺流程移到子类中去 PizzaStore超类变成,将CreatePizza变成抽象方法,由子类实现方法。 工厂模式的工厂方法 Pizza本身,超类 Pizza的多态 最终的User调用 对于pizza店和pizza通过工厂模式形成了一个pizza组件,这边对pizza的实现,就不会违反针对接口编程 简单工厂模式 创建者和产品 所有的底层都依赖于高层,高层与高层之间相互依赖,相互解耦。 工厂UML Pizza店再次升级,Pizza原料升级 Ingredient(成分)超类: Dough(面团)Veggies(蔬菜)Pepperoni(意大利香肠)clam(蛤)子类: 改造Pizza类 抽象方法prepare() cheesepizza 靠近一点工厂 商店如何使用工厂 抽象工厂模式类图 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族

工厂模式、抽象工厂

大憨熊 提交于 2019-11-27 20:08:29
1 /** 2 * 最初的设计 3 */ 4 Pizza orderPizaa(String type){ 5 Pizza pizza; 6 /* 7 *此代码没有对修改封闭 8 *压力来自于增加更多的比萨类型 9 */ 10 if(type.equals("cheese")){ 11 pizza = new CheesePizza(); 12 } else if(type.equals("greek")){ 13 pizza = new GreekPizza(); 14 } else if(type.equals("pepperoni")){ 15 pizza = new PepperoniPizza(); 16 } 17 18 pizza.prepare(); 19 pizza.bake(); 20 pizza.cut(); 21 pizza.box(); 22 return pizza; 23 } 24 /** 25 *建立一个简单工厂 26 */ 27 public class SimplePizzaFactory{ 28 public Pizza createPizza(String type){ 29 Pizza pizza = null; 30 31 if(type.equals("cheese")){ 32 pizza = new CheesePizza(); 33

设计模式之工厂模式(上篇)

懵懂的女人 提交于 2019-11-26 12:48:54
为了面向接口编程,而不是面向实现编程,所以此时我么就不能再直接使用new了,因 为当看到“new”时,我们就会想到“具体”。 下面来看一个例子,假如你有一个披萨店,你的代码可能这么写: 1 Pizza orderPizza(){ 2 Pizza pizza = new Pizza(); 3 4 pizza.prepare(); 5 pizza.bake(); 6 pizza.cut(); 7 pizza.box(); 8 9 return pizza; 10 } 但是此时你需要更多披萨类型,所以你就要修改代码,如下所示: 1 Pizza orderPizza(String type){ 2 Pizza pizza = new Pizza(); 3 4 if (type.equals("cheese")) { 5 pizza = new CheesePizza(); 6 } else if (type.equals("pepperoni")) { 7 pizza = new PepperoniPizza(); 8 } else if (type.equals("clam")) { 9 pizza = new ClamPizza(); 10 } else if (type.equals("veggie")) { 11 pizza = new VeggiePizza(); 12 } 13

Python for Datawhale Task2

半世苍凉 提交于 2019-11-25 23:35:35
1. 列表 1.1 列表标志 列表(List)用[ ]标识,是Python中最通用的复合数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。 1.2 列表的基本操作 列表的创建 >>> foods = ['apple','pizza','cake','肉肉'] >>> foods = ['apple','pizza','cake','肉肉'] >>> print(foods) ['apple', 'pizza', 'cake', '肉肉'] 创建数字列表 >>> numbers = list(range(1,6)) >>> even_numbers = list(range(2,11,2)) >>> print(numbers,even_numbers) [1, 2, 3, 4, 5] [2, 4, 6, 8, 10] 访问及修改列表元素 >>> print(foods[0]) apple >>> print(foods[-1]) 肉肉 >>> foods[0] = 'candy' >>> print(foods) ['candy', 'pizza', 'cake', '肉肉'] 在列表中添加元素 在末尾添加 >>> foods.append('chicken') >>> print(foods) ['candy', 'pizza'