一 、工厂设计模式的定义
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
如下图所示,现有需求需建设不同风味(芝加哥、纽约、上海)的四种(芝士、素食、哈利、意式腊肠)披萨,如何构建代码便于实现。
抽象为创建者创建产品,创建者即为披萨商店,产品即为披萨,如下抽象图,
说明:Creator是一个类,它实现了所有操纵产品的方法,但不实现工厂方法,且其子类必须都实现factoryMethod()方法。ConcreteCreator负责一个或多个具体产品,只有其知道如何具体创建产品,实现了工厂方法。所有的ConcreteProduct必须实现具体的Product接口,这样使用这些产的类就可以引用这些接口而不是具体的类。
具体到上面披萨的建成可以参考如下UML图
具体代码实现请看GitHub代码