상위문서: GoF 디자인 패턴
객체 생성을 서브 클래스(객체를 만드는 공장-Factory로 이해)로 분리하여 처리하도록 캡슐화 하는 패턴
장점은
1. 클래스 간 결합도를 낮춰서 보다 효율적인 코드 제어를 할 수 있다.
// Student.class
public abstract class Student{
public abstract String getMajor();
}
public class MathGroup extends Student{
@Override
public String getMajor(){
return "Math";
}
}
public class CSGroup extends Student{
@Override
public String getMajor(){
return "CS";
}
}
// Group.class
public abstract class Group{
abstract Student createStudent(String major);
}
public class FactoryMethod extends Group{
@Override
Student createStudent(String major){
switch(major){
case "Math": return new MathGroup();
case "CS" : return new CSGroup();
}
}
}
{...}
// test
FactoryMethod fm = new FactoryMethod();
Student student = fm.createStudent("CS");