总的来说,工厂模式是使解决对象的创建和使用分离。由简单到复杂分为:
简单工厂:
优点:包含必要的判断逻辑、实现了对象的创建和使用的分离
缺点:职责过重、添加新的构造逻辑时,需要修改,不符合开闭原则
工厂方法:定义一个创建对象的接口,让子类决定实例化哪个类,工厂模式使一个类的实例化延迟到其子类
优点:包含必要的判断逻辑、实现了对象的创建和使用的分离
缺点:职责过重、添加新的构造逻辑时,需要修改,不符合开闭原则
抽象工厂:提供一个创建一系列或相关依赖对象的接口,而无需指定他们具体的类
优点:工厂方法在新增产品时就要新增工厂类,但是抽象工厂,只有在新增一个类型的具体产品时才需要新增工厂
缺点:增加产品等级结构很麻烦
场景:系统不应依赖产品类实例如何被创建、组合、和表达、系统中有多于一个产品族、属于同一个产品族的产品将在一起使用、系统结构稳定,不会频繁增加对象
案例:AWT(抽象工厂工具包)、Spring beanFactory、Calendar