반응형
1. 팩토리 메서드 패턴이란?
2. 팩토리 메서드 패턴의 장단점
3. 팩토리 메서드 패턴 예시 코드
1. 팩토리 메서드 패턴이란?
: 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지 서브클래스에서 결정하는 것입니다. 동일한 인터페이스를 준수하는 클래스들을 생성하는 것이 목적입니다.
* 구조
Product | Creator | |
Product | Creator | |
Concrete | ConcreteProduct | ConcreteCreator |
- Product : 팩토리 메서드로 생성될 공용 객체. 주로 추상 클래스 또는 인터페이스
- ConcreteProduct : Product를 상속받는 객체
- Creator : Product가 구현하는 메서드가 존재. 주로 추상 클래스 또는 인터페이스
- ConcreteCreator : Creator를 상속받음.
2. 팩토리 메서드 패턴의 장단점
* 장점
- 객체의 생성을 한군데에서 관리할 수 있습니다.
- 동일한 인터페이스 구현으로, 새로운 객체가 추가되더라도 소스의 수정이 거의 없습니다.
* 단점
- 패턴 구현에 의해 코드가 복잡해질 수 있습니다.
3. 팩토리 메서드 패턴 예시 코드(C#)
- Product = (추상 클래스) 생성할 객체의 공통적인 특성을 지님
abstract class Animal
{
protected string name;
}
- ConcreteProduct = Dog, Cat = Enemy를 상속받음. 인터페이스를 실제로 구현
class Dog : Animal
{
public Dog()
{
name = "Dog";
Console.WriteLine(this.name);
}
}
class Cat : Animal
{
public Cat()
{
name = "Cat";
Console.WriteLine(this.name);
}
}
- Creator = (추상 클래스) Product 타입의 객체를 반환하는 팩토리 메서드를 선언하는 클래스
abstract class Creator
{
private List<Animal> _Animal = new List<Animal>();
public Creator() { }
public List<Animal> Animals
{
get { return _Animal; }
}
public abstract void CreateAnimals();
}
- ConcreteCreator : PatternAGenerator, PatternBGenerator. Creator를 상속받아 오버라이딩.
class PatternAGenerator : Creator
{
public override void CreateAnimals()
{
Animals.Add(new Dog());
Animals.Add(new Cat());
}
}
class PatternBGenerator : Creator
{
public override void CreateAnimals()
{
Animals.Add(new Cat());
Animals.Add(new Cat());
}
}
반응형
'[Computer Science] > [디자인 패턴]' 카테고리의 다른 글
[디자인 패턴] 더티 플래그(Dirty flag) (0) | 2022.09.15 |
---|---|
[디자인패턴] 싱글톤 패턴(Singleton Pattern) (0) | 2022.05.14 |