当前位置: 首页 > 产品大全 > Java实现工厂方法模式详解与源码示例

Java实现工厂方法模式详解与源码示例

Java实现工厂方法模式详解与源码示例

工厂方法模式是一种常用的创建型设计模式,它定义了一个创建对象的接口,但让子类决定要实例化哪一个类。工厂方法让类的实例化延迟到子类进行。

工厂方法模式的基本结构

在工厂方法模式中,主要有以下几个角色:

  • Product(抽象产品):定义产品的接口
  • ConcreteProduct(具体产品):实现抽象产品接口的具体类
  • Creator(抽象工厂):声明工厂方法,返回一个Product类型的对象
  • ConcreteCreator(具体工厂):重写工厂方法,返回一个ConcreteProduct实例

完整源码实现

1. 抽象产品接口

// 产品接口
public interface Product {
void use();
}

2. 具体产品实现

`java // 具体产品A public class ConcreteProductA implements Product { @Override public void use() { System.out.println("使用产品A"); } }

// 具体产品B
public class ConcreteProductB implements Product {
@Override
public void use() {
System.out.println("使用产品B");
}
}
`

3. 抽象工厂类

// 抽象工厂
public abstract class Creator {
// 工厂方法
public abstract Product factoryMethod();
// 业务方法
public void someOperation() {
Product product = factoryMethod();
product.use();
}
}

4. 具体工厂实现

`java // 具体工厂A public class ConcreteCreatorA extends Creator { @Override public Product factoryMethod() { return new ConcreteProductA(); } }

// 具体工厂B
public class ConcreteCreatorB extends Creator {
@Override
public Product factoryMethod() {
return new ConcreteProductB();
}
}
`

5. 客户端使用示例

public class Client {
public static void main(String[] args) {
// 使用工厂A创建产品A
Creator creatorA = new ConcreteCreatorA();
creatorA.someOperation();
// 使用工厂B创建产品B
Creator creatorB = new ConcreteCreatorB();
creatorB.someOperation();
// 直接获取产品
Product productA = creatorA.factoryMethod();
Product productB = creatorB.factoryMethod();
productA.use();
productB.use();
}
}

输出结果

使用产品A
使用产品B
使用产品A
使用产品B

工厂方法模式的优势

  1. 封装性:客户端不需要知道具体产品的类名,只需要知道对应的工厂即可
  2. 扩展性:当需要增加新的产品时,只需要添加新的具体工厂和具体产品类,无需修改现有代码
  3. 符合开闭原则:对扩展开放,对修改关闭
  4. 解耦合:将对象的创建和使用分离

实际应用场景

工厂方法模式在Java开发中有广泛应用,例如:

  • JDBC中的Connection对象获取
  • Spring框架中的BeanFactory
  • 日志框架中的LoggerFactory
  • 集合框架中的迭代器创建

通过工厂方法模式,我们可以灵活地创建对象,提高代码的可维护性和扩展性。

如若转载,请注明出处:http://www.w-share.com/product/266.html

更新时间:2025-11-29 08:14:41

产品大全

Top