Java의 생성자 모드는 팩토리 모드와 다소 유사하지만 초점이 다릅니다. 팩토리 패턴은 종종 당신이 원하는 것에만 관심이 있고 이것의 구체적인 세부 사항에는 관심이 없습니다. 상대적으로 말하자면, 생성 모드는 이 사물을 생성하는 구체적인 세부 사항과 관련이 있습니다. 캐릭터 생성을 예로 들어보겠습니다. 우리는 캐릭터 생성뿐만 아니라 성별, 피부색, 이름에도 관심을 둡니다. 그런 다음 생성기 모드를 사용할 수 있습니다.
프로그램 예는 다음과 같습니다.
패키지 빌더;/** * * DOC 경주 역할* */public class Race { private String name;// name private String skinColor;// 피부색 private String sex;// 성별 public String getName() { return this.name ; } 공개 void setName(문자열 이름) { this.name = 이름; } 공개 문자열 getSkinColor() { return this.skinColor } 공개 void setSkinColor(String skinColor); this.skinColor = skinColor; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; }}package builder;/** * * DOC 단지 캐릭터를 생성하려면 캐릭터의 특성 생성에도 신경을 써야 합니다* */public class RaceBuilder { private Race race /** * DOC 레이스 생성* * @return */ public RaceBuilder builder() { this. 인종 = 새로운 Race(); return this; } /** * 이름을 선택하는 DOC* * @return */ public RaceBuilder setName(String name) { this.race.setName(name) } /** * DOC to 성별 선택* * @return */ public RaceBuilder setSex(String sex) { this.race.setSex(sex) return this } /** * DOC 피부색 선택* * @return */ public RaceBuilder; setSkinColor(String skinColor) { this.race.setSkinColor(skinColor); return this; } /** * * DOC 생성된 경주를 반환합니다.* * @return */ public Race create() { return this.race }}
테스트 클래스는 다음과 같습니다.
패키지 빌더;공개 클래스 Main { public static void main(String[] args) { Race race = new RaceBuilder().builder().setName("Zhang San").setSex("Male").setSkinColor("White" ).만들다(); }}