Java工厂模式
工厂模式是一种常用的设计模式,它主要用于创建对象。在工厂模式中,我们创建对象而不是直接使用 new 关键字创建对象。这样可以带来很多好处,例如可以减少重复代码、降低耦合性、提高灵活性等。
工厂模式的实现
工厂模式一般分为三种类型,分别是简单工厂模式、工厂方法模式和抽象工厂模式。下面我们主要介绍简单工厂模式的实现。
简单工厂模式
简单工厂模式又称为静态工厂方法模式,它是工厂模式中最简单的一种实现方式。在简单工厂模式中,我们通过一个工厂类来创建对象,而这个工厂类中的方法一般都是静态方法。
实现简单工厂模式的步骤如下:
- 创建一个产品接口或者抽象类,定义产品的公共方法。
- 创建不同的产品类,实现产品接口或者继承抽象类。
- 创建工厂类,包含一个静态方法用于根据不同的条件创建不同的产品对象。
下面我们通过一个例子来演示简单工厂模式的实现过程。
产品接口
我们先创建一个产品接口,这个接口定义了产品的公共方法。
public interface Car {
void run();
}
不同的产品类
我们创建两个不同的产品类,分别是宝马车和奥迪车。
public class BMW implements Car {
@Override
public void run() {
System.out.println("宝马车在跑。。。");
}
}
public class Audi implements Car {
@Override
public void run() {
System.out.println("奥迪车在跑。。。");
}
}
工厂类
最后我们创建一个工厂类,这个工厂类中包含一个静态方法用于根据不同的条件创建不同的产品对象。
public class CarFactory {
public static Car createCar(String carName) {
if ("BMW".equals(carName)) {
return new BMW();
} else if ("Audi".equals(carName)) {
return new Audi();
} else {
return null;
}
}
}
测试
最后我们来进行测试,看看工厂模式是否生效。我们传入不同的参数,创建不同的产品对象并调用其方法。
public class Test {
public static void main(String[] args) {
Car bmw = CarFactory.createCar("BMW");
Car audi = CarFactory.createCar("Audi");
bmw.run();
audi.run();
}
}
输出结果为:
宝马车在跑。。。
奥迪车在跑。。。
从输出结果可以看出,工厂模式生效了,我们成功地根据不同的条件创建了不同的产品对象。
工厂模式的优缺点
使用工厂模式有以下优点:
- 工厂模式可以降低代码重复率,提高代码可重用性。
- 工厂模式可以降低类之间的耦合度,提高系统的灵活性和可扩展性。
- 工厂模式在增加新产品时,只需要增加对应的产品类和工厂类方法即可,不需要修改已有的代码。
但使用工厂模式也有一些缺点:
- 工厂模式的代码结构比较复杂,需要额外的工厂类代码。
- 工厂模式对于简单的对象创建过程可能会比直接 new 一个对象更加繁琐。