[Design Pattern] 행동 패턴 2. 팩토리 메서드 (Factory Method)
Table of Contents
팩토리 메서드 (Factory Method) #
- 객체를 만들 수 있는 인터페이스를 제공한다. 어떤 클래스의 객체를 만들지는 서브 클래스들이 결정한다.
개념적인 예시 #
abstract class Creator
{
// 팩토리 메서드
// 새로운 무언가를 만들고 싶다면 이것을 오버라이드하기만 하면 된다. (확장성)
public abstract IProduct FactoryMethod();
public string SomeOperation()
{
var product = FactoryMethod();
var result = product.Operation();
return result;
}
}
class ConcreteCreator1 : Creator
{
public override IProduct FactoryMethod()
{
// 서브 클래스가 어떤 클래스의 객체를 만들지 결정한다.
return new ConcreteProduct1();
}
}
class ConcreteCreator2 : Creator
{
public override IProduct FactoryMethod()
{
return new ConcreteProduct2();
}
}
// 제품
public interface IProduct
{
string Operation();
}
// 제품 1
class ConcreteProduct1 : IProduct
{
public string Operation()
{
return "ConcreteProduct1";
}
}
// 제품 2
class ConcreteProduct2 : IProduct
{
public string Operation()
{
return "ConcreteProduct2";
}
}
class Program
{
static void Main(string[] args)
{
Creator creator = new ConcreteCreator1();
Console.WriteLine(creator.SomeOperation()); // ConcreteProduct1
}
}