创建型模式支持对象的创建,该模式允许在系统中创建对象,而不需要在代码中标识特定类的类型,这样用户就不需要编写大量、复杂的代码来初始化对象。在不指定具体类的情况下, (问题1) 模式为创建一 系列相关或相互依赖的对象提供了一个接口。 (问题2) 模式将复杂对象的构建与其表示相分离,这样相同的构造过程可以创建不同的对象。 (问题3) 模式允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象。
创建型模式的核心价值在于封装对象创建的具体细节,解除业务代码与具体类的强绑定,以此提升系统的灵活性与可扩展性。其中,抽象工厂模式提供统一接口,可创建一系列相关或相互依赖的对象集群,无需指定具体实现类,适配产品族类场景,比如为不同平台打造风格统一的UI组件套系,能有效保障系列对象的兼容性与一致性;建造者模式聚焦于拆分复杂对象的构建流程与最终产品表示,让相同的构建步骤可以生成不同配置的实例,比如用标准化步骤组装不同硬件配置的电脑,既可控构建过程,又能灵活产出多样变体;原型模式通过克隆已有原型对象来生成新实例,无需知晓目标对象的具体类和创建细节,适合对象初始化成本高、需要快速生成多个自定义实例的场景,比如复制带有复杂配置的业务对象,还能在隐藏创建逻辑的同时实现实例的个性化调整。这三类模式各有侧重,与专注保障单一实例的单例模式定位完全不同,实际开发中可根据业务场景的核心需求选型适配。
此题考察设计模式的相关概念。
在创建型模式中,不同的设计模式解决的是对象创建过程中的不同问题。题干描述了三种典型的创建型模式的应用场景:
问题 1:在不指定具体类的情况下,为创建一系列相关或相互依赖的对象提供了一个接口。
A选项Prototype:用于通过复制已有对象的方式创建新对象,不适合用于创建一系列相关对象。
B选项Abstract Factory:提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们的具体类,符合题干描述。
C选项Builder:用于构建复杂对象,注重的是构造过程,而不是一系列对象的关系。
D选项Singleton:用于保证一个类只有一个实例,与创建一系列相关对象无关。
因此,第一小题正确答案为 B. Abstract Factory。
问题 2:将复杂对象的构建与其表示相分离,这样相同的构造过程可以创建不同的对象。
A选项Prototype:关注对象的克隆,不涉及构造过程的分离。
B选项Abstract Factory:侧重于创建一系列对象,而不是复杂对象的构造过程。
C选项Builder:将构建复杂对象的过程与其表示分离,可以使用相同的构建过程生成不同的产品,正是题干描述的内容。
D选项Singleton:与对象构造过程无关。
因此,第二小题正确答案为 C. Builder。
问题 3:允许对象在不了解要创建对象的确切类以及如何创建等细节的情况下创建自定义对象。
A选项Prototype:允许通过复制已有对象(原型)来创建新对象,而无需知道这些对象的类或创建过程,正好符合题意。
B选项Abstract Factory:虽然也隐藏了具体类,但它关注的是创建一组相关对象,并不强调“克隆”或“自定义”对象。
C选项Builder:强调构建过程的解耦,而不是隐藏创建细节。
D选项Singleton:用于确保单一实例,与创建多个自定义对象无关。
因此,第三小题正确答案为 A. Prototype。
