객체를 만들기 위한 인터페이스를 정의하나, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 하위 클래스가 정하도록 하는 패턴. 즉, 객체 생성 처리를 서브클래스로 분리 해 처리하도록 캡슐화 하는 패턴.
객체의 자료형이 서브 클래스에 의해서 결정되므로 확장에 용이하다.
DIP (Dependency Inversion Principle, 의존 관계 역전의 원칙)를 성립한다.
DIP (Dependency Inversion Principle, 의존 관계 역전의 원칙) 란?
객체 지향 설계의 5대 원칙(SOLID) 중 하나로써, 의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다는 원칙.
변화하기 어려운 것 - 정책, 전력과 같은 어떤 큰 흐름이나 개념처럼 추상적인 것. 변화하기 쉬운 것 - 구체적인 방식, 사물 등과 같은 것. 으로 생각하면 이해하기 조금 더 수월하다.