C#/디자인 패턴

[C# / Unity] 디자인 패턴 - 심플 팩토리

윤창범 2021. 4. 4.

※ 읽기 전에 한번 숙지하면 좋은 내용

 

math-development-geometry.tistory.com/40

 

C# - 추상 클래스, 가상 클래스 - abstract, virtual 사용법

지난 포스팅 인터페이스에서 잠시 언급된 추상과 가상에 대한 이야기를 하도록 하겠습니다. 추상과 가상을 먼저 이야기 했으면 좋았겠지만, 제 포스팅은 그냥 의식의 흐름으로 적는 포스팅이기

math-development-geometry.tistory.com

 

glikmakesworld.tistory.com/5

 

유니티 디자인패턴 - 팩토리(심플팩토리, 팩토리 메소드, 추상팩토리) (Unity Design Patterns - Factory)

흔한 프로그래밍 언어서 새로운 인스턴스를 만들 때  new를 사용한다. 만약 내 게임의 스테이지1에서 그린고블린을 만든다면 아래와 같이 만들것이다. GreenGoblin greenGoblin = new GreenG

glikmakesworld.tistory.com

 


추상/가상 키워드에 대해서 어느 정도 알고 사용할 수 있다면 도움이 될만한 패턴에 대해서 먼저 다뤄보고자 한다.

 

던전 RPG 게임을 만든다고 가정해보자.

 

플레이어가 던전을 돌고 클리어한다면 상자를 보상으로 주는데, 이 상자를 구현해야 하는 상황이다.

 

그런데 무기 장비가 들어있는 상자가 나올 수도 있고, 골드나 보석과 같은 게임의 재화가 들어있는 상자가 나올 수도 있게 해야 한다.

(여러 종류의 상자들이 나온다)

 

단순히 2개 ~ 4개 정도의 상자 종류에서는 거의 기능적 범위 차이가 크지 않는 경우에 사용할 수 있고 우리가 흔히 사용했던 방식이기도 한 패턴이다.

 

단순히 if 문으로 구분해서 구현하는거다.

 

예시)

(여기서 종류와 구현할 사항이 더 늘어난다면?.. 다른 방법을 찾아야 한다.)

기본적으로 위의 예시 코드를 살펴보면 상자와 관련된 클래스 계층구조는 다음과 같을 것이다.

 

(기본 상자인 원형 클래스를 상속받아 상자별로 구현하는 세부적인 부분은 생략)

 

상자의 종류가 여기서 끝이라면 상관없을 것 같지만, 계속해서 종류가 더 늘어나고 구현할 내용이 많아진다면 유지 보수에 있어서 굉장히 곤란해진다.

 

그래서 필요한 것이 조금 더 발전된 형태의 팩토리 메소드 패턴과 추상 팩토리가 있는데, 다음 일지에서 다뤄보도록 하겠다.

(여러 자료를 찾아보면 알 수 있지만 심플 팩토리를 포함한 팩토리 메소드, 추상 팩토리, 싱글톤 등의 패턴들은 모두 생성패턴에 해당된다)

 

※ 예시에서는 if문을 사용했지만, 패턴은 어디까지나 다르게 구현할 수 있으므로 switch문을 사용해도 상관없다.

댓글