工厂方法模式（Factory Method Pattern）
	定义了一个创建对象的接口，但由子类决定要实例化的类是哪一个。工厂方法让类把实例化

推迟到子类。（示例：对象村比萨）

项目需求
	压力来自于增加更多的比萨类型（究竟实例化哪个类，要在运行时由一些条件来决定。）
	加盟比萨店（每家加盟店都可能想要提供不同风味的比萨，但是你想要多一些质量控制）

依赖倒置原则
	要依赖抽象，不要依赖具体类。（你所获得的加薪，将比买本书所付出的钱更多）
	不能让高层组件依赖低层组件，“两者”都应该依赖于抽象。

具体实施
创建者（Creator）类
	定义了一个抽象的工厂方法，让子类实现此方法制造产品。（p131）
产品类
	所有店里能实际制造的比萨都在这里。

模式特性
	工厂方法使用继承：把对象的创建委托给子类，子类实现工厂方法来创建对象。

优点
	将对象的创建封装起来，以便于得到更松耦合、更有弹性的设计。
抽象工厂(Abstract Factory)模式
	提供一个接口，用于创建相关或依赖对象的家族，而不需要明确指定具体类。（示例：原料家族）

项目需求
	要如何确保每家加盟店使用高质量的原料？你打算建造一家生产原料的工厂，并将原料运送到各家加盟店。
	对于这个做法，现在还剩下一个问题：加盟店座落在不同的区域，纽约的红酱料和芝加哥的红酱料是不一样的。

具体实施
抽象工厂
	定义了一个接口，用来创建一个产品家族。（p156）
产品家族
	每个具体工厂都能够生产一整组的产品。

模式特性
	抽象工厂创建相关的对象家族，而不需要依赖它们的具体类。
	抽象工厂使用对象组合：对象的创建被实现在工厂接口所暴露出来的方法中。

优点
	所有工厂模式都通过减少应用程序和具体类之间的依赖促进松耦合。
	工厂是很有威力的技巧，帮助我们针对抽象编程，而不要针对具体类编程。