【1】简单工厂模式:静态工厂方法模式,有工厂类角色(Creator),抽象产品角色(Product),具体角色(Concrete Product)
虚线:创建依赖和一般依赖。这样等级结构不会反映到工厂类中,这样缺点:增加新的产品将导致工厂类的修改,简单工厂使用静态方法作为工厂方法,无法由子类继承。
抽象产品角色由Java接口扮演,如果具体产品类中确实有共同的商业逻辑,就需要移到抽象角色里
【2】工厂方法(多态性工厂):定义一个创建产品对象的工厂接口,不再负责所有的产品的创建,将实际创建工作推迟到子类中,允许系统在不修改具体工厂角色的情况下引进新的产品。
类图
活动序列图
工厂方法模式的核心:一个抽象工厂类,允许具体工厂类继承创建行为 || 增加新的产品是,只要加入产品类以及对应的工厂类,不要修改客户端和抽象工厂角色,完全支持“开-闭”原则
简单工厂模式的核心:一个具体类
【3】抽象工厂:向客户端提供接口,使客户端不必指定产品的具体类型,创建多个产品族中的产品对象。
使用情况:系统产品多余一个产品族,系统只消费其中某一族的产品
功能:增加新的产品族;增加新的产品等级结构
例子:操作系统中,一个视窗构件组成的构建家族