利用静态方法定义一个简单的工厂,常被称为静态工厂。缺点,不能通过继承来改变创建方法的行为。
工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,工厂方法让类吧实例化推迟到子类。
类图:
简单工厂不具备工厂方法的弹性,因为简单工厂不能变更正在创建的产品。
工厂模式例子:不同地域的比萨商店创建比萨。
设计原则:要依赖抽象,不要依赖具体类。(依赖倒置原则)
避免违反依赖倒置原则:变量不可以持有具体类的引用。不要让类派生自具体类。不要覆盖基类中已实现的方法。(根据具体设计可取舍)
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
类图:
比萨原料工厂例子。
工厂用的方法是继承,抽象工厂用的是组合。