부모 클래스에 객체들을 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴이다. new 연산자를 사용한 객체 생성 직접 호출들을 특별한 팩토리 메서드에 대한 호출들로 대체하라고 제안한다.객체들은 new 연산자를 통해 생성되지만 팩토리 메서드 내에서 호출된다. 참고로 팩토리 메서드에서 반환된 객체는 종종 제품이라고 불린다. 생성자 호출을 프로그램의 한 부분에서 다른 부분으로 옮기는 변경은 무의미해 보이지만, 이런 변경은 자식 클래스에서 팩토리 메서드를 오버라이딩하고 그 메서드에 의해 생성되는 제품들의 클래스를 변경할 수 있게 된다. 약간의 제한으로 자식 클래스들은 다른 유형의 제품들을 해당 제품이 공통 기초 클래스 또는 공통 인터페이스가 있는 ..