设计模式之工厂方法模式

工厂方法模式简介

工厂方法模式定义一个超级工厂,围绕一个超级工厂创建具体工厂,将实际操作交给具体工厂,在具体工厂中创建我们所需要的实例。

实例模拟

我们就在之前的简单工厂上进行修改

先定义一个生产汽车的抽象接口,它的实现类可选择生产那种汽车

1
2
3
4
5
6
7
public interface Car {

/**
* 造车方法
*/
void creat();
}

然后添加两个生产汽车的具体实现类

生产奥迪车

1
2
3
4
5
6
public class AodiCar implements Car {
@Override
public void creat() {
System.out.println("奥迪车造好了");
}
}

生产宝马车

1
2
3
4
5
6
public class BmwCar implements Car {
@Override
public void creat() {
System.out.println("宝马车造好了");
}
}

接下来有所不同的是它提供了一个超级工厂接口,而不是直接在工厂中做逻辑判断

1
2
3
public interface CarFactory {
Car creatCar();
}

然后为超级工厂接口提供其具体的工厂实现

返回生产奥迪车的工厂

1
2
3
4
5
6
public class AodicarFactory implements CarFactory {
@Override
public Car creatCar() {
return new AodiCar();
}
}

返回生产宝马的工厂

1
2
3
4
5
6
public class BwmCarFactory implements CarFactory {
@Override
public Car creatCar() {
return new BmwCar();
}
}

客户端进行买车

1
2
3
4
5
6
7
8
9
public class Customer {
public static void main(String[] args) {
CarFactory aodicarFactory = new AodicarFactory();
aodicarFactory.creatCar().creat();

CarFactory bmwfactory = new BwmCarFactory();
bmwfactory.creatCar().creat();
}
}

结果如下

总结

  • 相比于简单工厂,我们再增加一个功能时,我们还需要再增加一个工厂接口的实现类工厂用来返回我们所需要的实例对象。(缺点)
  • 不需要对我们的工厂接口进行逻辑修改(优点)
  • 代码随着功能的增多会显得越来越臃肿(缺点)
文章目录
  1. 1. 工厂方法模式简介
  2. 2. 实例模拟
    1. 2.0.1. 先定义一个生产汽车的抽象接口,它的实现类可选择生产那种汽车
    2. 2.0.2. 然后添加两个生产汽车的具体实现类
    3. 2.0.3. 接下来有所不同的是它提供了一个超级工厂接口,而不是直接在工厂中做逻辑判断
    4. 2.0.4. 然后为超级工厂接口提供其具体的工厂实现
    5. 2.0.5. 客户端进行买车
  • 3. 总结
  • |