当前位置:实例文章 » 其他实例» [文章]【设计模式】工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

【设计模式】工厂方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

发布人:shili8 发布时间:2024-12-24 19:51 阅读次数:0

**工厂方法模式**

工厂方法模式是一种创建型设计模式,它定义了一个接口或抽象类,让子类决定如何创建对象。

### 简介工厂方法模式的主要目的是隔离具体产品的创建逻辑,使得客户端代码与具体产品的实现细节解耦。这种模式通过提供一个用于创建对象的公共接口,来使得系统更具扩展性和灵活性。

### 适用场景工厂方法模式适用于以下场景:

* 需要创建多种不同类型的对象时。
* 需要隔离具体产品的创建逻辑,使得客户端代码与具体产品的实现细节解耦。
* 需要增加系统的扩展性和灵活性。

###优缺点**优点**

* **解耦**:工厂方法模式可以使得客户端代码与具体产品的实现细节解耦。
* **扩展性**:工厂方法模式可以方便地增加新的产品类型。
* **灵活性**:工厂方法模式可以根据需要改变创建对象的逻辑。

**缺点**

* **复杂度**:工厂方法模式可能会增加系统的复杂度,因为它需要定义一个用于创建对象的公共接口。
* **依赖关系**:工厂方法模式可能会引入新的依赖关系,因为客户端代码需要依赖于工厂类。

###代码示例下面是一个简单的例子,演示了如何使用工厂方法模式来创建不同类型的汽车:

java// 抽象产品类:汽车public abstract class Car {
 public abstract void move();
}

// 具体产品类:奔驰public class Benz extends Car {
 @Override public void move() {
 System.out.println("Benz is moving...");
 }
}

// 具体产品类:宝马public class BMW extends Car {
 @Override public void move() {
 System.out.println("BMW is moving...");
 }
}

// 工厂接口public interface CarFactory {
 Car createCar();
}

// 具体工厂类:奔驰工厂public class BenzFactory implements CarFactory {
 @Override public Car createCar() {
 return new Benz();
 }
}

// 具体工厂类:宝马工厂public class BMWFactory implements CarFactory {
 @Override public Car createCar() {
 return new BMW();
 }
}

public class Main {
 public static void main(String[] args) {
 // 使用工厂方法模式创建汽车 Car benz = new BenzFactory().createCar();
 Car bmw = new BMWFactory().createCar();

 // 使用汽车 benz.move(); // 输出:Benz is moving...
 bmw.move(); // 输出:BMW is moving...
 }
}


在这个例子中,我们定义了一个抽象产品类 `Car`,以及两个具体产品类 `Benz` 和 `BMW`。我们还定义了一个工厂接口 `CarFactory`,以及两个具体工厂类 `BenzFactory` 和 `BMWFactory`。

客户端代码可以使用工厂方法模式来创建不同类型的汽车:

java// 使用工厂方法模式创建汽车Car benz = new BenzFactory().createCar();
Car bmw = new BMWFactory().createCar();

// 使用汽车benz.move(); // 输出:Benz is moving...
bmw.move(); // 输出:BMW is moving...


这种设计使得客户端代码与具体产品的实现细节解耦,增加了系统的扩展性和灵活性。

其他信息

其他资源

Top