-
객체의 생성과 표현을 분리해, 동일한 생성 절차에서 다른 결과가 나올 수 있게 한다. 생성자만으로는 해결하기 어려운 문제를 위한 패턴.
Product의 생성자는 비워 놓아 Builder를 사용하도록 강제한다. set 메서드들은 직접 사용하지 않고, Builder 클래스의 Build 메서드 내에서 사용한다. Director 클래스에서 Builder 객체를 생성한 뒤 Construct() 함수를 호출한다.
Unity 예제 코드
public class CharacterBuilder { private int hp; private int attack; private int attackSpeed; public CharacterBuilder SetHp(int hp) { this.hp = hp; return this; } public CharacterBuilder SetAttack(int attack) { this.attack = attack; return this; } public CharacterBuilder SetAttackSpeed(int attackSpeed) { this.attackSpeed = attackSpeed; return this; } public void Build(Character character) { // 여기서 객체를 생성한다. // 생성자를 사용하는 대신, 이미 생성된 객체의 값만 바꾼다. character.SetStatus(this.hp, this.attack, this.attackSpeed); } }
public void StartBattle() { CharacterBuilder characterBuilder = new CharacterBuilder(); characterBuilder.SetHp(int.Parse(this.playerHpInput.text)) .SetAttack(int.Parse(this.playerAtkInput.text)) .SetAttackSpeed(int.Parse(this.playerSpdInput.text)) .Build(this.player); }