Java设计模式中的工厂模式是一种常用的软件设计模式,它旨在解决如何在不指定特定类型的情况下创建对象的问题。本资源主要讲解的是简单工厂模式,也称为静态工厂方法模式。简单工厂模式的核心思想是由一个工厂类根据需求决定创建哪种具体的产品类实例,而不是由客户端直接创建。
简单工厂模式的特点包括:
1. 单一职责:工厂类只负责创建对象,客户端无需了解具体的产品实现细节。
2. 灵活性:工厂可以根据业务需求动态调整创建的对象类型,提供了可扩展性和修改性。
3. 封装性:隐藏了对象的具体类型,提高了代码的可维护性和可读性。
在Java中,实现简单工厂模式可以通过如下步骤:
1. 定义接口或抽象类:首先,创建一个公共的接口或抽象类,比如`Fruit`接口,所有具体的水果产品(如`Apple`、`Strawberry`、`Grape`)都需实现这个接口。
```java
package com.lavasoft.patterns.simplefactory.ybgc;
public interface Fruit {
void eat();
}
```
2. 创建工厂类:为每种水果创建一个工厂类,比如`AppleFactory`、`StrawberryFactory`等,这些工厂类继承自`FruitFactory`或实现`Fruit`接口,并提供创建对应产品的静态方法。
```java
public class AppleFactory implements FruitFactory {
public static Fruit createApple() {
return new Apple();
}
}
public class StrawberryFactory implements FruitFactory {
public static Fruit createStrawberry() {
return new Strawberry();
}
}
```
3. 简单工厂接口:定义一个`FruitFactory`接口或抽象类,包含一个创建对象的方法,客户端通过调用这个方法来获取所需的产品。
```java
public abstract class FruitFactory {
public abstract Fruit createFruit();
}
```
4. 客户端代码:在需要使用水果的地方,通过`FruitFactory`的实例来请求特定类型的水果,而不需要知道具体的实现。
```java
public class FruitGardener {
public void provideFruit(FruitFactory factory) {
Fruit fruit = factory.createFruit();
fruit.eat();
}
}
```
通过以上步骤,当需要添加新的水果类型时,只需要新增一个工厂类并保持`FruitFactory`接口的统一,而不影响客户端的代码。这种模式简化了对象创建的过程,降低了耦合度,使得系统更加灵活和易于维护。