Factory 패턴의 이해

Yujun Cho·2022년 8월 14일
0

변화에 유용하고 효율적인 코드를 작성하기 위해서는 객체지향적인 설계가 중요합니다.

객체지향적인 설계를 위해서는 객체지향 이론 그 자체도 중요하지만 선배 개발자 분들이 마련한 훌륭한 디자인 패턴들을 이해하고 적재적소에 사용하는 능력도 못지않게 중요합니다.

디자인 패턴을 이해하면 개념으로만 배운 객체지향 이론들이 어떻게 실제 코드에 적용되고 어떤 효과를 발휘하는지 피부로 느끼게 됩니다.

Factory 패턴이란

하위 클래스를 생성하는 팩토리 클래스를 활용하는 패턴입니다.
팩토리 클래스는 하나의 상위 클래스에 속하는 여러 하위 클래스를 인스턴스화하는 팩토리 메서드를 가지고 있습니다. 따라서, 다른 클래스에서는 하위 클래스를 직접 인스턴스화하는 코드를 포함할 필요가 없게 됩니다.

사용 예시

Monster 클래스를 상속받는 Zombie, Skeleton, Spider 클래스를 인스턴스화할 수 있는 MonsterFactory는 다음과 같습니다.

public enum MonsterType { Zombie, Skeleton, Spider }

public class MonsterFactory
{
	public Monster CreateMonster(MonsterType monsterType)
    {
    	if (monsterType == MonsterType.Zombie)
        	return new Zombie();
        else if (monsterType == MonsterType.Skeleton)
        	return new Skeleton();
        else
        	return new Spider();
    }
}

MonsterFactory를 이용하여 Zombie 객체를 생성하는 코드는 다음과 같습니다.

MonsterFactory monsterFactory = new MonsterFactory();
Zombie zombie = monsterFactory.CreateMonster(MonsterType.Zombie);

장점

팩토리 패턴을 사용하게 되면 낮은 결합도를 유지할 수 있습니다. Zombie 객체를 사용하는 클래스에서는 Monster 객체를 상속받는 다른 클래스들을 알지 않아도 됩니다. 추후에 Monster 클래스를 상속받는 Slime 클래스가 추가되더라도 코드의 변경이 없는 것이죠.

profile
Whatever I want.

0개의 댓글