希赛考试网
首页 > 软考 > 软件设计师

抽象工厂模式代码实现

希赛网 2024-06-15 17:22:48

【什么是抽象工厂模式】

抽象工厂模式是指提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体的类。

抽象工厂模式将对象的创建与使用分离,客户端不需要知道具体的产品细节,只需要知道产品接口即可,从而将客户端代码与具体产品的实现分离开来,更容易进行系统维护以及扩展。

【抽象工厂模式适用场景】

1. 系统需要不同类型的对象作为产品;

2. 系统需要在不同条件下创建不同具体产品;

3. 系统需要简化产品的切换,增加新产品时方便扩展。

【抽象工厂模式角色】

1. 抽象产品:定义产品的接口;

2. 具体产品:实现抽象产品接口的具体产品类;

3. 抽象工厂:定义创建抽象产品的方法;

4. 具体工厂:实现抽象工厂接口,返回具体产品的实例。

【示例代码】

以手机生产厂商为例,抽象工厂为手机厂商,具体工厂为华为、小米等,抽象产品为手机,具体产品为华为Mate40、小米11等。

首先,定义抽象产品Phone:

```

public interface Phone {

void make();

}

```

其次,定义具体产品:

```

public class HuaweiMate40 implements Phone {

@Override

public void make() {

System.out.println("生产华为Mate40");

}

}

```

```

public class XiaoMi11 implements Phone {

@Override

public void make() {

System.out.println("生产小米11");

}

}

```

然后,定义抽象工厂PhoneFactory:

```

public interface PhoneFactory {

Phone makePhone();

}

```

最后,实现具体工厂:

```

public class HuaweiFactory implements PhoneFactory {

@Override

public Phone makePhone() {

return new HuaweiMate40();

}

}

```

```

public class XiaoMiFactory implements PhoneFactory {

@Override

public Phone makePhone() {

return new XiaoMi11();

}

}

```

【抽象工厂模式优缺点分析】

1. 优点:

(1)抽象工厂模式可以屏蔽产品实现类的具体实现,只关注产品的接口定义,不会受产品类变化的影响,具备较好的扩展性。

(2)可以直接通过产品族的定义来创建产品,这样更符合“开闭原则”,当需求变化时,只需要增加新的产品族,就可以创建新的产品对象,无需修改原有代码。

2. 缺点:

(1)产品族扩展困难,如需增加新的产品,需要修改抽象工厂的接口及所有的具体工厂,这对系统的维护性和扩展性带来较大影响。

(2)新加产品等级结构复杂,可能需要增加很多具体类,导致类数目增多。

扫码咨询 领取资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件