MST

星途 面试题库

面试题:Java建造者模式中Director的作用

在Java的建造者模式里,Director类起到了关键作用,请阐述Director类的主要职责是什么,并举例说明在《Java建造者模式构建复杂对象的高效流程》场景下,Director如何协调对象的构建过程。
49.6万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

Director类的主要职责

  1. 封装构建过程:Director类封装了复杂对象的构建过程。它知道构建一个完整对象需要哪些步骤,以及这些步骤的执行顺序。它并不关心具体的构建细节,这些细节由具体的Builder实现类负责。
  2. 调用Builder方法:Director通过调用Builder接口中定义的方法来逐步构建对象。它按照预先定义好的顺序调用这些方法,以确保对象构建的完整性和正确性。

示例说明

假设我们要构建一个复杂的游戏角色对象。游戏角色有名称、性别、职业、装备等多个属性。

  1. 定义Builder接口
public interface CharacterBuilder {
    void buildName();
    void buildGender();
    void buildClass();
    void buildEquipment();
    GameCharacter getGameCharacter();
}
  1. 具体的Builder实现类
public class WarriorCharacterBuilder implements CharacterBuilder {
    private GameCharacter gameCharacter = new GameCharacter();

    @Override
    public void buildName() {
        gameCharacter.setName("Warrior1");
    }

    @Override
    public void buildGender() {
        gameCharacter.setGender("Male");
    }

    @Override
    public void buildClass() {
        gameCharacter.setClassType("Warrior");
    }

    @Override
    public void buildEquipment() {
        gameCharacter.setEquipment("Sword, Shield");
    }

    @Override
    public GameCharacter getGameCharacter() {
        return gameCharacter;
    }
}
  1. 定义Director类
public class CharacterDirector {
    private CharacterBuilder characterBuilder;

    public CharacterDirector(CharacterBuilder characterBuilder) {
        this.characterBuilder = characterBuilder;
    }

    public GameCharacter constructCharacter() {
        characterBuilder.buildName();
        characterBuilder.buildGender();
        characterBuilder.buildClass();
        characterBuilder.buildEquipment();
        return characterBuilder.getGameCharacter();
    }
}
  1. 使用场景
public class Main {
    public static void main(String[] args) {
        CharacterBuilder warriorBuilder = new WarriorCharacterBuilder();
        CharacterDirector director = new CharacterDirector(warriorBuilder);
        GameCharacter warrior = director.constructCharacter();
        System.out.println(warrior);
    }
}

在上述例子中,CharacterDirector类协调了游戏角色对象的构建过程。它调用WarriorCharacterBuilder的各个方法,按照一定顺序构建游戏角色的各个部分,最终返回一个完整的游戏角色对象。Director类使得构建复杂对象的过程更加清晰和可维护,同时也将构建过程和具体的对象构建细节分离开来。