简单工厂
简单工厂中没有抽象工厂类,在仅有的简单工厂中,创建工作根据传入的需求,采用相应的分支,创建相应的对象。说白了就是if else,然后 newProductX/Y/Z…
工厂方法
工厂方法中,抽象工厂定义了一个抽象方法,具体工厂实现了该抽象方法,并在实现中创建一种对象。具体创建哪种对象取决于具体工厂本身。
比如,想要iphone就建一个phone工厂。想要huawei就建一个huawei工厂。
抽象工厂
抽象工厂是工厂方法的延伸,抽象工厂类中定义了多个对象创建的抽象方法,一个具体工厂中可以创建多种不同的对象的组合。具体如何创建这一组对象,取决于具体工厂本身。
这个例子不错:
比如用抽象工厂模式 创建 UI的各个组成部分:字体 工具栏 边角 颜色。。
concreteFactoryA 实现了 加粗字体 全集工具栏 圆形边角 红色风格
客户端程序调用concreteFactoryA就能得到这个组合样式。