工厂方法模式简介
工厂方法模式定义一个超级工厂,围绕一个超级工厂创建具体工厂,将实际操作交给具体工厂,在具体工厂中创建我们所需要的实例。
实例模拟
我们就在之前的简单工厂上进行修改
先定义一个生产汽车的抽象接口,它的实现类可选择生产那种汽车
1 | public interface Car { |
然后添加两个生产汽车的具体实现类
生产奥迪车
1 | public class AodiCar implements Car { |
生产宝马车
1 | public class BmwCar implements Car { |
接下来有所不同的是它提供了一个超级工厂接口,而不是直接在工厂中做逻辑判断
1 | public interface CarFactory { |
然后为超级工厂接口提供其具体的工厂实现
返回生产奥迪车的工厂
1 | public class AodicarFactory implements CarFactory { |
返回生产宝马的工厂
1 | public class BwmCarFactory implements CarFactory { |
客户端进行买车
1 | public class Customer { |
结果如下
总结
- 相比于简单工厂,我们再增加一个功能时,我们还需要再增加一个工厂接口的实现类工厂用来返回我们所需要的实例对象。(缺点)
- 不需要对我们的工厂接口进行逻辑修改(优点)
- 代码随着功能的增多会显得越来越臃肿(缺点)
