设计模式:工厂方法模式应用升级

需积分: 0 0 下载量 139 浏览量 更新于2024-08-05 收藏 315KB PDF 举报
本章节主要探讨的是工厂方法模式(Factory Method Pattern),它是软件设计模式中的一个重要概念,用于解决在不指定具体实现的情况下创建对象的问题。在给定的情境中,一家公司需要购买并组装电脑,原始的需求是批量采购固定配置的电脑,即每台电脑都包含Intel i5处理器和8GB内存。为了实现这个功能,我们设计了一个`Company`类,它有一个`buy`方法来创建和组装这些电脑。 在最初的代码实现中,`buy`方法接收一个整数参数`n`,表示需要购买的电脑数量。公司内部直接实例化`CPU`和`Memery`对象,并将它们添加到`Computer`中。这种设计违背了单一职责原则(Single Responsibility Principle),因为`Company`类不仅负责购买,还负责电脑的具体构造。 工厂方法模式的核心思想是将对象的创建过程抽象出来,通过一个共同的接口或抽象工厂,让子类决定具体如何创建对象。在升级的问题中,公司需要提供不同配置的电脑,这就需要引入配置类型的概念,以及对组装流程的选择。这可以通过以下方式实现: 1. **修改参数**:`buy`方法的参数从仅接受数量改为接受一个`List<String>`类型的订单列表,每个字符串代表一种电脑配置类型。 2. **抽象工厂**:创建一个`ComputerFactory`或`ComputerBuilder`接口,用于处理不同配置的电脑组装。这个接口定义了创建特定配置电脑的方法,如`createLowEndComputer()`和`createHighEndComputer()`。 3. **子类实现**:为每种配置创建子类,如`LowEndComputerFactory`和`HighEndComputerFactory`,它们分别对应低配置和高配置电脑的装配逻辑。这些子类实现了工厂接口,并在接收到相应的配置类型时,创建对应的CPU和内存对象。 4. **组装分支**:在`buy`方法中,根据订单列表中的配置类型调用对应的工厂方法,根据返回的组装好的`Computer`对象添加到结果列表中。 通过这种方式,工厂方法模式帮助我们将对象的创建逻辑隔离,降低了`Company`类的耦合度,使其更符合单一职责原则,同时也提高了代码的可扩展性和可维护性。当有新的电脑配置需求时,只需要添加新的工厂子类,而不必修改原有代码。这体现了工厂方法模式的核心价值:解耦和灵活扩展。