반응형
Abstract Factory Pattern은 연관된 객체들의 그룹 또는 의존 객체들의 집합을 생성하기 위한 인터페이스를 제공합니다. 이는 상호 교환 가능한 객체 집합을 생성하는 것을 목표로 하며, 객체 생성의 구체적인 클래스를 숨긴 채 각 집합의 공통된 테마나 속성에 따라 객체를 생성합니다.
기본 구조
Abstract Factory Pattern은 주로 다음 구성 요소로 이루어져 있습니다
- AbstractFactory: 모든 구체 팩토리의 공통 인터페이스입니다.
- ConcreteFactory: 실제 객체 집합을 생성하는 구체적인 팩토리입니다.
- AbstractProduct: 생성되는 제품의 공통 인터페이스입니다.
- ConcreteProduct: 실제 생성되는 제품입니다.
언제 사용해야 하는가?
- 시스템이 제품 집합 중 하나를 독립적으로 생성해야 할 때
- 시스템의 구성에 여러 제품 집합 중 하나를 동적으로 설정하려는 경우
- 제품의 종류와 구조를 클라이언트에서 분리하려 할 때
As-Is 예시 (Abstract Factory Pattern 사용 전)
public class WindowsButton
{
// Windows 버튼 생성 로직
}
public class WindowsCheckbox
{
// Windows 체크박스 생성 로직
}
public class MacButton
{
// Mac 버튼 생성 로직
}
public class MacCheckbox
{
// Mac 체크박스 생성 로직
}
To-Be 예시 (Abstract Factory Pattern 사용 후)
// AbstractFactory & AbstractProduct
public interface IUIFactory
{
IButton CreateButton();
ICheckbox CreateCheckbox();
}
public interface IButton
{
void Render();
}
public interface ICheckbox
{
void Render();
}
// ConcreteFactory & ConcreteProduct
public class WindowsUIFactory : IUIFactory
{
public IButton CreateButton()
{
return new WindowsButton();
}
public ICheckbox CreateCheckbox()
{
return new WindowsCheckbox();
}
}
public class MacUIFactory : IUIFactory
{
public IButton CreateButton()
{
return new MacButton();
}
public ICheckbox CreateCheckbox()
{
return new MacCheckbox();
}
}
public class WindowsButton : IButton
{
public void Render()
{
// Windows 버튼 렌더링 로직
}
}
public class WindowsCheckbox : ICheckbox
{
public void Render()
{
// Windows 체크박스 렌더링 로직
}
}
public class MacButton : IButton
{
public void Render()
{
// Mac 버튼 렌더링 로직
}
}
public class MacCheckbox : ICheckbox
{
public void Render()
{
// Mac 체크박스 렌더링 로직
}
}
반응형
'프로그래밍 > C#' 카테고리의 다른 글
[C#] SkipWhile & TakeWhile (0) | 2023.08.18 |
---|---|
[C#] 디자인 패턴 - Builder Pattern (0) | 2023.08.15 |
[C#] 디자인패턴 - Factory Method Pattern (0) | 2023.08.15 |
[C#] 디자인패턴 - Strategy Pattern (0) | 2023.08.15 |
[C#] LINQ 쿼리 구문 연산자와 사용법 (0) | 2023.06.09 |