简单工厂
封装创建对象的代码,解耦对象实力化的逻辑。
下面为一个创建披萨的简单工厂:
1 | //抽象披萨 |
工厂方法
定义一个创建对象的接口,由子类决定要实例化的类是哪一个。
下面是一个抽象的披萨商店:
1 | public abstract class PizzaStore { |
通过实现不同的披萨商店,达到不同的城市,有不同特色的披萨。
1 | //纽约特色 |
抽象工厂
提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
其中采用了依赖倒置的原则:要依赖抽象,不要依赖具体类。
下面是一个抽象的原料工厂:
1 | public interface PizzaIngredientFactory { |
不同城市通过实现原料工厂,创建出有本地特色的披萨。
1 | //纽约原料厂 |