도서 요약 / / 2022. 12. 22. 19:53

[도메인 주도 설계 철저 입문] 팩토리 패턴

"도메인 주도 설계 철저 입문" 도서를 정리한 내용입니다.

 

7. 복잡한 객체 생성을 맡길 수 있는 ‘팩토리 패턴’

팩토리의 목적

  • 도구가 고안되는 이유는 도구를 사용하는 방법만 알면 대부분 구조를 몰라도 도구의 장점을 그대로 누릴 수 있기 때문이다.
  • 객체 지향 프로그래밍에 쓰이는 클래스는 도구 그 자체다.
  • 메서드의 사용 방법만 알면 클래스의 내부 구조를 몰라도 누구든 사용할 수 있다.
  • 복잡한 도구는 만드는 과정도 복잡하다. 그렇다면 도구를 만든 과정도 일종의 지식이라고 할수 있다.
  • 이렇게 객체 생성과 책임지는 객체를 마치 도구를 만드는 공장 과도 같다고 해서 '팩토리'라고 부른다.
  • 팩토리는 객체의 생성 과정과 관련된 지식이 정리된 객체다.

복잡한 객체 생성 절차를 캡슐화하기

  • 다형성의 장점을 누릴 수 있게 팩토리를 만들기도 하지만, 이와 달리 단순히 생성 절차가 복잡한 인스턴스를 만드는 코드를 모아둔 팩토리를 만드는 것도 좋은 습관이다.
  • 원래대로라면 객체의 초기화는 생성자 메서드의 역할이다.
  • 그러나 생성자 메서드는 단순함을 유지해야 한다. 생성자 메서드가 복잡해진다면 팩토리를 정의한다.
  • '생성자 메서드 안에 다른 객체를 생성하는가'라는 질문은 팩토리의 필요성을 나타내는 좋은 지표라고 할 수 있다.
  • 만약 생성자 메서드가 다른 객체를 생성하고 있다면 이 객체가 변경됐을때 생성자 메서드도 함께 변경해야 할 우려가 있다.
  • 그냥 다른 객체의 인스턴스를 생성하는 것뿐이라도 복잡도를 상승시킨다.
  • 물론 모든 인스턴스를 팩토리에서 만들어야 한다는 말은 아니다.
  • 생성 절차가 간단하다면 그냥 생성 메서드를 호출하는 쪽이 더 낫다.
  • 여기서 말하는 '그냥 하던 대로 객체를 생성하지 말고 팩토리가 필요하지는 않은가 검토하는 습관을 들이자'는 것이다.

정리

  • 팩토리를 통해 생성 절차가 복잡한 객체를 생성하면 코드의 의도를 더 분명히 드러낼 수 있다.
  • 그리고 똑같은 객체 생성 코드가 이곳저곳 중복되는 것도 막을 수 있다.
  • 팩토리를 이용해 객체 생성 절차를 캡슐화하는 것도 로직의 의도를 더 명확히 드러내면서 유연성을 확보할 수 있는 좋은 방법이다.
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유