클래스에 객체의 인스턴스를 생성해 내기위한 인터페이스 (메서드)를 정의하지만 어떤 클래스의 인스턴스를 생성할지에 대한 걱정은 추상클래스의 하위클래스에서 결정하는 패턴이다. 추상클래스에는 virtual 인터페이스만 있고 구현은 하위클래스(구체클래스)에서 이루어지며 인스턴스의 원래 클래스도 구현부에서 결정하게 된다.
(* Smalltalk에서는 어떻게 추상클래스와 구체클래스를 구분해서 정의하는가 – 조사필요)
ex)word와 excel의 “새문서 생성”등의 경우를 생각해보자.
둘 다 동일한 메서드를 쓸 수 있다.
Document Class >> create Document Object
다만 메서드 전송 후에 반환되는 인스턴스의 종류는 틀리다. 이런 경우를 위해서 사용된다.