工厂模式是一种创建型设计模式,它提供了一种创建对象的接口,但是由子类决定要实例化的类是哪一个。工厂模式使得一个类的实例化延迟到其子类。
假设我们有一个产品接口 Product
和两个具体产品类 ConcreteProductA
和 ConcreteProductB
,以及一个工厂接口 Factory
和两个具体工厂类 ConcreteFactoryA
和 ConcreteFactoryB
。
// 产品接口
interface Product {
void display();
}
// 具体产品类 A
class ConcreteProductA implements Product {
@Override
public void display() {
System.out.println("This is ConcreteProductA.");
}
}
// 具体产品类 B
class ConcreteProductB implements Product {
@Override
public void display() {
System.out.println("This is ConcreteProductB.");
}
}
// 工厂接口
interface Factory {
Product createProduct();
}
// 具体工厂类 A
class ConcreteFactoryA implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductA();
}
}
// 具体工厂类 B
class ConcreteFactoryB implements Factory {
@Override
public Product createProduct() {
return new ConcreteProductB();
}
}
使用工厂模式的客户端代码:
public class Client {
public static void main(String[] args) {
// 使用工厂A创建产品A
Factory factoryA = new ConcreteFactoryA();
Product productA = factoryA.createProduct();
productA.display();
// 使用工厂B创建产品B
Factory factoryB = new ConcreteFactoryB();
Product productB = factoryB.createProduct();
productB.display();
}
}
工厂模式的具体应用场景包括:
工厂模式的优点包括: