본문 바로가기
java

추상 팩토리 패턴과 의존성 뒤집기

by 포잉띠 2024. 7. 17.

추상 팩토리 패턴(Abstract Factory Pattern)

정의 : 추상 팩토리 패턴은 관련된 객체들의 군을 생성하기 위한 인터페이스를 제공하며, 구체적인 클래스들이 이 인터페이스를 구현하여 실제 객체를 생성함

 

주요 특징 

  • 목적 : 관련된 객체들의 군을 일관된 방식으로 생성하며 클라이언트 코드와 생성로직을 분리함
  • 구성 요소 
    • Abstract Factory(추상 팩토리) : 관련된 제품 객체들을 생성하는 인터페이스
    • Concrete Factory(구체 팩토리) : Abstract Factory 인터페이스를 구현하며 실제 제품 객체를 생성하는 클래스
    • Abstract Product(추상 제품) : 생성될 객체의 타입을 정의하는 인터페이스의 추상 클래스
    • Concrete Product(구체 제품) : Abstract Product인터페이스를 구현하는 클래스
    • Client : Abstract Fatory 인터페이슬르 사용하여 객체를 생성하고 사용하는 클래스

제?품? 이 뭔가요?

제품 (Product Object)

특정 제품이나 아이템을 나타내는 클래스, 일반적으로 제품의 속성과 동작을 정의하며, 이를 통해 다양한 제품을 생성하고 

관리할 수 있음

 

팩토리 메소드 패턴과 추상 팩토리 패턴의 차이점이 뭔데요

 

팩토리 메소드 패턴

  • 단일 제품을 생성함 (단일 객체를 생성한다 느낌인듯)
  • 서브클래스에서 구체적인 객체 생성 로직을 구현
  • 객체 생성의 책임을 서브클래스에 위임

추상 팩토리 패턴

  • 관련된 여러 제품을 일관된 방식으로 생성
  • 각 구체 팩토리가 관련된 제품들을 생성
  • 객체 생성의 책임을 구체 팩토리 클래스에 위임

 

팩토리 메소드 패턴만 있는 줄 알았는데 추상 클래스도 있는거 보니

연관된 다른거 더 있는거 아님?!!!!!!!!!!!!!!!!

 

추상 팩토리와 관련된 패턴

 

Builder 패턴

  • Abstract 패턴을 인터페이스가 정해져 있는 추상적인 부품을 조립해서 복잡한 구조를 가진 인스턴스를 만듬.
  • Builder패턴은 단계를 밟아 나가면서 대규모의 인스턴스를 만든다.

Factory method 패턴

  • Abstract factory 패턴에서 제품이나 부품을 만드는 부분을 Factory method패턴을 사용하는 경우가 있음

Composite 패턴

  • Abstract factory 패턴으로 만들어진 제품은 composite 패턴이 되는 경우가 있음 

 Singleton패턴

  • Abstract factory 패턴의 구체적인 공장은 Singleton 패턴이 되는 경우가 있다.
    • 구체적인 공장의 전역 접근 보장
      • 추상 팩토리 패턴에서 구체적인 공장 클래스는 관련된 객체들의 생성 책임을 가지며, 이 공장이 여러 곳에서 사용될 경우 객체 생성의 일관성을 유지하기 위해 싱글턴 패턴을 사용합니다. 싱글턴 패턴을 적용하면, 애플리케이션 전체에서 공장의 단일 인스턴스를 공유할 수 있습니다.
    • 성능 및 자원 관리
      • 공장을 싱글턴으로 만들면, 공장 객체가 여러 번 생성되지 않도록 방지할 수 있습니다. 이는 성능을 향상시키고 자원 사용을 최적화하는 데 도움이 됩니다.
    • 상태 관리의 일관성
      • 공장 객체가 상태를 가질 수 있는 경우, 싱글턴 패턴을 사용하면 상태가 일관되게 유지될 수 있습니다. 예를 들어, 공장 객체가 생성된 객체들의 목록을 관리하거나 특정 설정 값을 유지해야 할 경우, 싱글턴 패턴을 사용하여 이러한 상태를 중앙에서 관리할 수 있습니다.