Factory
14 Apr 2021 | DesignPattern대충 추상적으로는 알고있지만, 정확한 정리가 필요하여 쓰게되었다.
개요
클래스의 인스턴스를 만드는 것을 서브클래스에서 결정하도록 한다
팩토리 패턴에는 두가지 종류가 있다.
- 팩토리 메서드 패턴
객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정한다.
- 추상 팩토리 패턴
인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상클래스를 지정하지 않고도 생성할 수 있다. (인터페이스로 선언한다). “추상화된 것에 의존하도록 만들고, 구상클래스에 의존되지 않도록 만든다”에 기인한 패턴이다
이런 방식을 통해 의존성 뒤집기 원칙(Dependency Inversion Principle)에 기인하는데, 이는 Spring의 핵심 개념중 하나이다.
팩토리 메서드 패턴
체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브 클래스에서 결정하도록 한다.
팩토리 메소드 패턴은 객체를 생성해서 반환하는 것을 말한다. 즉, 결과값이 객체인 것이다.
이렇게 해서 얻는 이점은 뭘까?
낮은 결합도를 얻을 수 있다. 직접 객체를 생성하지 않고 메소드를 통해 생성하고 반환하기 떄문에 효율적인 코드 제어가 가능하다.
추상 팩토리 패턴
인터페이스를 사용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있다. 즉 연관된 서브 클래스를 그룹화할 수 있고 이것은 이 그룹을 자유롭게 교체할 수 있는 패턴이다.
이는 인터페이스 또한 하나의 클래스라는 점을 알 수 있게되는 대목이다.