工厂模式深度解析与应用示例

需积分: 10 1 下载量 31 浏览量 更新于2024-07-28 1 收藏 138KB DOC 举报
"工厂模式详细介绍大全" 工厂模式是一种常用的设计模式,其主要目的是通过将对象的创建过程封装在一个单独的工厂类中,使得客户端在使用时无需关心具体的实现细节,从而提高代码的灵活性和可维护性。在Java等面向对象编程语言中,工厂模式被广泛应用于各种场景。 一、简单工厂模式 简单工厂模式是最基础的形式,也被称为静态工厂方法模式。在这个模式中,工厂类通常包含一个静态方法,该方法根据输入参数或条件决定创建哪种具体的产品对象。简单工厂模式的结构包括: 1. 工厂类角色:这是模式的核心,它负责创建对象,通常是一个具体类,包含创建对象的逻辑。 2. 抽象产品角色:这是所有产品对象的共同接口,可以是接口或抽象类。 3. 具体产品角色:实现了抽象产品角色,是工厂方法返回的对象。 例如,假设我们有一个`Car`接口和三个实现类:`BenzCar`, `BmwCar`, `AudiCar`。工厂类`CarFactory`可以包含一个静态方法`createCar(String type)`,根据传入的字符串类型返回对应的汽车对象。 ```java public interface Car { void drive(); } public class BenzCar implements Car { @Override public void drive() { System.out.println("Driving a Benz"); } } public class BmwCar implements Car { @Override public void drive() { System.out.println("Driving a Bmw"); } } public class AudiCar implements Car { @Override public void drive() { System.out.println("Driving an Audi"); } } public class CarFactory { public static Car createCar(String type) { if ("Benz".equals(type)) { return new BenzCar(); } else if ("Bmw".equals(type)) { return new BmwCar(); } else if ("Audi".equals(type)) { return new AudiCar(); } else { throw new IllegalArgumentException("Invalid car type"); } } } ``` 二、工厂方法模式 工厂方法模式将对象的创建委托给子类,工厂方法由每个子类自行实现,这样可以应对产品类型的扩展。相比于简单工厂模式,工厂方法模式更加灵活,但增加了类的数量。 1. 抽象工厂角色:定义创建对象的接口,但不直接创建对象。 2. 具体工厂角色:实现了抽象工厂,负责创建具体的产品。 3. 抽象产品角色:定义产品的公共接口。 4. 具体产品角色:实现了抽象产品接口,是用户真正需要的对象。 三、抽象工厂模式 抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。在不同的平台或环境下,可能需要创建一组相关的对象,抽象工厂模式可以帮助我们封装这些对象的创建过程。 1. 抽象工厂角色:定义创建一组相关或相互依赖对象的接口,不涉及具体对象的创建。 2. 具体工厂角色:实现了抽象工厂接口,提供特定平台或环境下的对象创建。 3. 抽象产品角色:定义了一组有共同主题的对象接口。 4. 具体产品角色:实现了抽象产品接口,是具体工厂创建的对象。 总结来说,工厂模式在软件设计中扮演着至关重要的角色,它帮助我们将对象的创建与使用分离,降低了系统之间的耦合度,使得系统更加易于维护和扩展。无论是简单工厂、工厂方法还是抽象工厂,都是为了在不同的场景下更好地实现这一目标。