工厂模式的本质
- 在创建的对象的时候不使用new,而是使用工厂方法去创建对象,避免了由于创建对象的时候参数过多带来的不便
- 创建对象统一管理,实现解耦
简单工厂模式(静态工厂模式)
类结构
接口方法:
实现类:
工厂方法:提供一个静态的方法,用于创建对象
分析:
- 可以通过一个工厂方法去创建对象,实现解耦
- 但是假设要再加一个对象的时候,下面的代码就会跟着改,维护成本大
方法工厂模式
对于一个类就创建一个工厂
类结构:
总结:
- 每次新建一个类就要增加一个类的工厂方法
- 在增加一个类的时候不需要改变其他类的代码
- 总体代码量大
比较简单工厂模式和方法工厂模式:
- 简单工厂模式改动的时候其他代码也要跟着一起改动,方法工厂模式可以实现增加一个类不改变其他代码
- 简单工厂模式代码量小于方法工厂模式
- 所以在选择的时候还是会选择简单工厂模式,因为它带来的是简单的精简
抽象工厂模式
简单的说就是创建一个更加抽象的大工厂,用于生产工厂,再由工厂去生产产品。
如下结构图:
创建一个最大的工厂,用于生产手机和路由器(最大的抽象)
工厂的实现类,一个是华为工厂,一个是小米工厂,在这几个工厂中分别生产自己品牌的手机和路由器
手机功能方法的接口
手机功能的实现类
路由器功能的接口
路由器功能的实现类
测试类:
总结:
- 可以将产品在代码层进行隔离,无需关心创建的细节
- 可以将一系列的产品统一到一起创建
- 类之间紧密联系,可能导致更加抽象和理解难度