软考
APP下载

抽象工厂模式代码实现

【什么是抽象工厂模式】

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

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

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

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)新加产品等级结构复杂,可能需要增加很多具体类,导致类数目增多。

备考资料 免费领取:软件设计师报考指南+考情分析+思维导图等 立即下载
真题演练 精准解析历年真题,助你高效备考! 立即做题
相关阅读
软件设计师题库