建造者模式应用场景 — 软件工程选择题
题目
某系统需要构建一个复杂的“订单”对象。订单包含:客户信息、一组商品项(数量不定)、折扣策略、配送地址、支付方式。构建订单时,必须按照固定顺序:先设置客户信息,然后逐项添加商品,接着设置折扣和配送地址,最后设置支付方式。系统支持两种订单类型:普通订单和团购订单,二者的内部校验逻辑不同,但构建步骤完全一致。此外,某些订单可以跳过折扣设置。以下关于设计模式选择及理由的叙述中,正确的是( )。
A. 应使用抽象工厂模式,因为需要创建普通订单和团购订单两种产品族。
B. 应使用建造者模式,因为它能将订单的构建步骤与具体订单类型的表示分离,同一构建过程可生成不同订单类型,并能控制折扣步骤是否执行。
C. 应使用工厂方法模式,因为需要根据订单类型延迟到子类决定实例化哪种订单。
D. 应使用原型模式,因为可以通过克隆已有订单对象来快速创建新订单。