前言: 在开发过程中,我们常常需要根据不同的条件来生成不同的对象。比如,生成不同类型的车、饮料或者人。在这种场景下,简单工厂模式便应运而生。它通过一个工厂类来统一创建对象,从而降低了对象创建的复杂度,使得代码更加清晰、可维护。
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一个工厂类用于根据传入的参数创建不同类型的对象。简单工厂模式的核心思想是通过一个工厂方法来决定实例化哪个类,而不需要在客户端代码中显式地调用构造函数。
可以把简单工厂类看作是一个“对象制造工厂”,它根据不同的输入条件(参数)来返回不同的实例对象。
简单工厂模式通常包含以下几个角色:
Product接口的具体类。假设我们要根据不同的饮料类型来创建不同的饮料对象。我们定义一个Drink接口,并为不同的饮料类型创建具体实现类。
1.定义产品接口:Drink
public interface Drink {
void prepare();
}2.创建具体产品类:Tea 和 Coffee
// 具体产品类 - Tea
public class Tea implements Drink {
@Override
public void prepare() {
System.out.println("Preparing Tea...");
}
}
// 具体产品类 - Coffee
public class Coffee implements Drink {
@Override
public void prepare() {
System.out.println("Preparing Coffee...");
}
}3.创建工厂类:DrinkFactory
public class DrinkFactory {
// 静态工厂方法
public static Drink createDrink(String type) {
if (type == null) {
return null;
}
if (type.equalsIgnoreCase("tea")) {
return new Tea();
} else if (type.equalsIgnoreCase("coffee")) {
return new Coffee();
}
return null;
}
}4.客户端代码:Client
public class Client {
public static void main(String[] args) {
// 客户端请求茶
Drink tea = DrinkFactory.createDrink("tea");
tea.prepare(); // 输出:Preparing Tea...
// 客户端请求咖啡
Drink coffee = DrinkFactory.createDrink("coffee");
coffee.prepare(); // 输出:Preparing Coffee...
}
}简单工厂模式非常适合用于产品种类固定且不复杂的场景。它能减少客户端代码中的耦合,提供统一的接口来生成产品。然而,随着产品种类的增多,工厂类可能会变得庞大和复杂,因此,在实际应用中,如果产品类型很多,可能需要考虑使用其他更为灵活的设计模式,比如工厂方法模式或抽象工厂模式。
如果您有任何问题或建议,欢迎留言讨论。