콘텐츠로 이동

AbstractFactory

연관된 객체 묶음을 구체 타입 의존 없이 생성하는 패턴입니다.

  • 플랫폼별 서비스 묶음을 통째로 교체할 때
  • 테스트용 제품군을 분리할 때
  • Abstract Factory
  • Concrete Factory
  • Abstract Product

아래 코드는 위에서 설명한 대표 상황을 Unity 프로젝트 맥락으로 단순화한 예시입니다.

public interface IPlatformServiceFactory
{
ILoginService CreateLoginService();
IStoreService CreateStoreService();
}
public sealed class MobilePlatformServiceFactory : IPlatformServiceFactory
{
public ILoginService CreateLoginService() => new MobileLoginService();
public IStoreService CreateStoreService() => new MobileStoreService();
}
public sealed class PcPlatformServiceFactory : IPlatformServiceFactory
{
public ILoginService CreateLoginService() => new PcLoginService();
public IStoreService CreateStoreService() => new PcStoreService();
}
  • 객체 생성 책임을 정리해 의존성 관리가 쉬워집니다.
  • 환경별/상황별 생성 정책을 유연하게 바꿀 수 있습니다.
  • 간단한 문제에 과한 생성 추상화를 넣지 않아야 합니다.
  • 생성 규칙이 많아질수록 문서와 테스트 동기화가 중요합니다.

플랫폼별 제품군을 동일 인터페이스로 생성하는 흐름입니다.

Abstract Factory 흐름