面试题答案
一键面试角色及职责
- 产品(Product)角色:
- 职责:表示被构建的复杂对象。它包含多个组成部分,这些组成部分共同构成了一个完整的对象。例如,在构建一辆汽车时,汽车就是产品,它包含发动机、轮胎、车身等部件。
- 抽象建造者(Builder)角色:
- 职责:为创建一个产品对象的各个部件指定抽象接口。该接口定义了创建产品各个部分的方法,例如创建汽车的发动机、创建轮胎等方法。它不涉及具体如何创建这些部件,只定义规范。
- 具体建造者(ConcreteBuilder)角色:
- 职责:实现抽象建造者接口,具体负责创建产品的各个部件。每个具体建造者都有自己独特的创建方式,例如一种具体建造者可能创建高性能发动机的汽车,另一种可能创建普通发动机的汽车。它还可以提供一个方法返回最终构建好的产品。
- 指挥者(Director)角色:
- 职责:负责调用具体建造者角色的方法来构建最终的产品对象。它知道构建产品的步骤顺序,控制整个构建过程,但不关心产品具体如何构建。例如,指挥者知道先创建发动机,再安装轮胎,最后组装车身来构建一辆汽车。
实际开发场景举例
假设开发一个游戏角色创建系统。
- 产品(Product):游戏角色,包含角色的属性如生命值、攻击力、防御力,外观如发型、服装等。
- 抽象建造者(Builder):定义创建角色属性和外观的抽象方法,如
buildHealth()
、buildAttack()
、buildAppearance()
等。 - 具体建造者(ConcreteBuilder):比如
WarriorBuilder
,实现抽象建造者的方法来构建战士角色,给生命值、攻击力等属性赋予适合战士的值,选择战士风格的外观;MageBuilder
则构建法师角色,设置适合法师的属性和外观。 - 指挥者(Director):游戏创建引导系统,根据玩家选择的角色类型,调用相应的具体建造者来构建角色。例如玩家选择战士,指挥者调用
WarriorBuilder
的方法,按顺序先构建生命值、攻击力等属性,再构建外观,最终返回构建好的战士角色。