Factory class 정의
public class TypeFactory {
public Type createType(String type){
Type returnType = null;
switch (type){
case "A":
returnType = new TypeA();
break;
case "B":
returnType = new TypeB();
break;
case "C":
returnType = new TypeC();
break;
}
return returnType;
}
}
객체 생성이 필요한 class 정의
public class ClassA {
public Type createType(String type){
TypeFactory factory = new TypeFactory();
Type returnType = factory.createType(type);
return returnType;
}
}
조건에 따른 생성 부분을 직접하지 않고 팩토리 클래스 위임
유연하며 확장 용이
객체의 자료형이 하위 클래스에 의해 결정되므로 기존 소스코드 변경할 필요없이 새로운 하위클래스만 생성 가능
객체간 낮은 결합도
팩토리 클래스를 통해 간접적으로 객체 생성, 인터페이스를 정의하고 자식클래스에서 구현
유지 보수 용이
결합도가 낮기때문에 최소 클래스만 수정 가능