JAVA中的工厂模式
一、工厂模式概述
工厂模式是一种创建型设计模式,它提供了一种创建对象的接口,但具体创建的对象类型可以在运行时决定。在JAVA中,工厂模式通过封装对象的创建过程,使得代码更加灵活和可扩展。
二、工厂模式的分类
根据工厂模式的实现方式,可以将其分为简单工厂模式、工厂方法模式和抽象工厂模式。
1. 简单工厂模式
简单工厂模式是最简单的工厂模式,它通过一个静态方法来创建对象。客户端只需要传入相应的参数,即可得到对应的对象。但是,简单工厂模式违反了开闭原则,当需要增加新的产品时,需要修改工厂类的代码。
2. 工厂方法模式
工厂方法模式是对简单工厂模式的改进,它定义了一个创建对象的接口,但让子类决定具体要实例化哪一个类。工厂方法模式将对象的创建过程延迟到子类中,使得系统更加灵活和可扩展。
3. 抽象工厂模式
抽象工厂模式是工厂方法模式的升级版,它用来创建一系列相关或者互相依赖的对象,而不需要指定它们具体的类。抽象工厂模式为创建一组相关对象提供了一种接口,客户端可以使用这个接口来创建对象,而不需要知道具体创建的是哪个类的对象。
三、工厂模式的示例
下面以简单工厂模式为例,介绍如何在JAVA中实现工厂模式。
1. 创建产品接口
首先,创建一个产品接口Product
,定义产品的通用方法。
public interface Product {
void use();
}
2. 创建具体产品类
然后,创建实现Product
接口的具体产品类ConcreteProductA
和ConcreteProductB
。
public class ConcreteProductA implements Product {
@Override
public void use() {
System.out.println("使用具体产品A");
}
}
public class ConcreteProductB implements Product {
@Override
public void use() {
System.out.println("使用具体产品B");
}
}
3. 创建工厂类
最后,创建一个工厂类SimpleFactory
,提供一个静态方法createProduct
来创建产品对象。客户端可以通过调用这个方法并传入参数来得到相应的产品对象。
public class SimpleFactory {
public static Product createProduct(String type) {
if ("A".equals(type)) {
return new ConcreteProductA();
} else if ("B".equals(type)) {
return new ConcreteProductB();
} else {
throw new IllegalArgumentException("无效的产品类型:" + type);
}
}
}
4. 客户端使用示例
在客户端代码中,可以通过调用SimpleFactory
的createProduct
方法来创建产品对象,并调用其use
方法。
public class Client {
public static void main(String[] args) {
Product productA = SimpleFactory.createProduct("A");
productA.use(); // 输出:使用具体产品A
Product productB = SimpleFactory.createProduct("B");
productB.use(); // 输出:使用具体产品B
}
}