- 객체를 사용하는 코드에서 생성 부분을 떼어내 추상화한 패턴이다. - 객체 생성을 캡슐화한다. - 상속 관계에 있는 두 클래스에서 상위 클래스가 뼈대를 형성한다. - 하위 클래스에서 객체 생성에 관한 구체적인 내용을 담는다. - 느슨한 결합, 생성 방식에 대해 전혀 알 필요가 없기 때문에 유연성이 높다. - 생성 코드가 따로 떼어져 있어 코드 리팩터링을 할 때 한 곳만 고칠 수 있으니 유지 보수성이 증가된다. - 확장성이 높아진다. - 매서드에 대한 메모리 할당을 한 번만 할 수 있는 장점이 있다. // 제품 인터페이스 public interface Product { void doSomething(); } // 구체 제품 클래스 1 public class ConcreteProduct1 implement..