程序员的知识教程库

网站首页 > 教程分享 正文

设计模式-抽象工厂模式(设计模式抽象工厂模式)

henian88 2024-10-18 05:57:42 教程分享 2 ℃ 0 评论

抽象工厂模式是一种创建型设计模式,它提供了一种统一的方式来创建一组相关或依赖对象的家族,而无需指定具体的类。

好处:

1. 提供了一种封装和解耦对象之间的关系的方式,使得客户端代码无需关心具体对象的创建过程。

2. 能够简化客户端代码,只需通过一个抽象工厂接口就可以创建一整组相关或依赖的对象,减少了代码的重复性。

3. 能够轻松替换具体工厂,从而改变创建对象的逻辑,而对客户端代码没有任何影响。

缺点:

1. 由于每个具体工厂类负责创建一整组相关或依赖对象,因此对于新增产品家族的扩展不太方便,需要修改抽象工厂接口和所有具体工厂类的代码。

2. 每个具体工厂类中都包含了创建一整组对象的逻辑,因此具体工厂类的代码可能会比较复杂。

应用场景:

1. 需要创建一组相关或依赖的对象家族。

2. 需要统一管理一组相关对象的创建过程,以保证创建的对象是相互兼容的。

3. 需要切换不同的对象家族时,不希望对客户端代码造成影响。

实现步骤:

1. 定义抽象工厂接口,声明一组创建对象的抽象方法。

2. 实现具体的产品类,实现抽象产品接口。

3. 实现具体的工厂类,实现抽象工厂接口,在每个抽象方法中创建对应的具体产品对象。

4. 在客户端代码中,通过抽象工厂接口创建一组相关的对象。

以下是一个用Java代码举例的实现:

```java

// 抽象产品接口

interface Product {

void use();

}

// 具体产品A

class ConcreteProductA implements Product {

public void use() {

System.out.println("正在使用具体产品A");

}

}

// 具体产品B

class ConcreteProductB implements Product {

public void use() {

System.out.println("正在使用具体产品B");

}

}

// 抽象工厂接口

interface Factory {

Product createProduct();

}

// 具体工厂A

class ConcreteFactoryA implements Factory {

public Product createProduct() {

return new ConcreteProductA();

}

}

// 具体工厂B

class ConcreteFactoryB implements Factory {

public Product createProduct() {

return new ConcreteProductB();

}

}

public class Main {

public static void main(String[] args) {

// 创建具体工厂A

Factory factoryA = new ConcreteFactoryA();

// 通过具体工厂A创建产品A

Product productA = factoryA.createProduct();

productA.use();


// 创建具体工厂B

Factory factoryB = new ConcreteFactoryB();

// 通过具体工厂B创建产品B

Product productB = factoryB.createProduct();

productB.use();

}

}

```

输出结果:

```

正在使用具体产品A

正在使用具体产品B

```



本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表