工厂方法模式
工厂方法模式是一种常用的创建型设计模式,它提供了一种将对象的创建委托给子类的方法。在工厂方法模式中,抽象工厂定义了一个用于创建对象的接口,而具体工厂则负责实现该接口,创建具体的产品对象。
工厂方法模式的核心思想是将对象的创建与使用分离开来,客户端不需要知道实际创建的对象类型,只需要知道创建对象的接口即可。这样可以使客户端代码更加简洁、可维护、可扩展,同时也符合开闭原则。
以下是一个工厂方法模式的示例代码:
// 定义一个抽象产品接口
interface Product {
void use();
}
// 定义具体产品类
class ConcreteProduct1 implements Product {
public void use() {
System.out.println("使用具体产品1");
}
}
class ConcreteProduct2 implements Product {
public void use() {
System.out.println("使用具体产品2");
}
}
// 定义一个抽象工厂接口
interface Factory {
Product createProduct();
}
// 定义具体工厂类
class ConcreteFactory1 implements Factory {
public Product createProduct() {
return new ConcreteProduct1();
}
}
class ConcreteFactory2 implements Factory {
public Product createProduct() {
return new ConcreteProduct2();
}
}
// 客户端使用
public class Client {
public static void main(String[] args) {
Factory factory1 = new ConcreteFactory1();
Product product1 = factory1.createProduct();
product1.use();
Factory factory2 = new ConcreteFactory2();
Product product2 = factory2.createProduct();
product2.use();
}
}
在上面的代码中,Product 是抽象产品接口,ConcreteProduct1 和 ConcreteProduct2 是具体产品类。Factory 是抽象工厂接口,ConcreteFactory1 和 ConcreteFactory2 是具体工厂类。在客户端使用时,先创建具体工厂对象,然后通过具体工厂对象创建具体产品对象。这样,当需要新增产品时,只需要增加具体产品类和具体工厂类即可,不需要修改客户端代码。