MST

星途 面试题库

面试题:Java中构建者模式的结构组成

请详细阐述Java构建者模式中包含哪些角色,每个角色的职责分别是什么,并举例说明在实际开发场景中可能会用到这些角色的情况。
18.8万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

角色及职责

  1. 产品(Product)角色
    • 职责:表示被构建的复杂对象。它包含多个组成部分,这些组成部分共同构成了一个完整的对象。例如,在构建一辆汽车时,汽车就是产品,它包含发动机、轮胎、车身等部件。
  2. 抽象建造者(Builder)角色
    • 职责:为创建一个产品对象的各个部件指定抽象接口。该接口定义了创建产品各个部分的方法,例如创建汽车的发动机、创建轮胎等方法。它不涉及具体如何创建这些部件,只定义规范。
  3. 具体建造者(ConcreteBuilder)角色
    • 职责:实现抽象建造者接口,具体负责创建产品的各个部件。每个具体建造者都有自己独特的创建方式,例如一种具体建造者可能创建高性能发动机的汽车,另一种可能创建普通发动机的汽车。它还可以提供一个方法返回最终构建好的产品。
  4. 指挥者(Director)角色
    • 职责:负责调用具体建造者角色的方法来构建最终的产品对象。它知道构建产品的步骤顺序,控制整个构建过程,但不关心产品具体如何构建。例如,指挥者知道先创建发动机,再安装轮胎,最后组装车身来构建一辆汽车。

实际开发场景举例

假设开发一个游戏角色创建系统。

  • 产品(Product):游戏角色,包含角色的属性如生命值、攻击力、防御力,外观如发型、服装等。
  • 抽象建造者(Builder):定义创建角色属性和外观的抽象方法,如buildHealth()buildAttack()buildAppearance()等。
  • 具体建造者(ConcreteBuilder):比如WarriorBuilder,实现抽象建造者的方法来构建战士角色,给生命值、攻击力等属性赋予适合战士的值,选择战士风格的外观;MageBuilder则构建法师角色,设置适合法师的属性和外观。
  • 指挥者(Director):游戏创建引导系统,根据玩家选择的角色类型,调用相应的具体建造者来构建角色。例如玩家选择战士,指挥者调用WarriorBuilder的方法,按顺序先构建生命值、攻击力等属性,再构建外观,最终返回构建好的战士角色。