简单工厂模式、工厂方法模式、抽象工厂模式都属于建立型模式。这三个模式都是为了解决对象的建立而生。这三个工厂模式就像孪生兄弟同样,老是让人傻傻分不清楚。今天就依据我的理解对三个模式总结对比一下。设计
模式 | 定义 |
---|---|
简单工厂 | 别名静态工厂方法(Static Factory Method )模式。在简单工厂模式中,能够根据参数的不一样返回不一样类的实例。 |
工厂方法 | 定义一个建立对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 |
抽象工厂 | 提供一个建立一系列相关或相互依赖对象的接口,而无需指定它们的具体类。 |
简单工厂 | 工厂方法 | 抽象工厂 |
---|---|---|
工厂角色 抽象产品角色 |
抽象产品 _ 具象产品 抽象工厂 _ 具象工厂 |
抽象产品 _ 具象产品 抽象工厂 _ 具象工厂 |
简单分析三种模式的结构图以及所拥有的结构关系,咱们不难看出三种模式的不一样点:code
简单工厂 | 工厂方法 | 抽象工厂 | |
---|---|---|---|
建立过程 | 由工厂内部直接根据不一样条件建立 | 定义一个抽象建立产品接口,将实例化过程延迟到子类 | 提供一个建立一系列或者相关依赖对象的接口,有子类实现实例化 |
区别 | 1.将客户端判断逻辑抽象到工厂内 2. 用来生产同一等级结构中的任意产品,没法新增产品 |
1.判断逻辑依旧在客户端 2. 用来生产同一等级结构中的固定产品,可任意增长新产品 |
1.判断逻辑依旧在客户端 2. 用来生产不一样产品族的所有产品,不可任意增长新产品,可添加任意产品族 |
以上三种工厂 方法在等级结构和产品族这两个方向上的支持程度不一样。因此要根据状况考虑应该使用哪一种方法。cdn