캐릭터 테이블 데이터 아답터 패턴 활용

2021. 4. 9. 11:38기술/디자인 패턴

반응형

테이블이 CharacterTable과 EnemyTable으로 나누어져 있습니다.

 

캐릭터 테이블과 적 테이블을 나누는 이유는 컬럼이 다를 수 있고

플레이어 캐릭터의 HP와 적 캐릭터의 HP의 수치가 다를 수 있으므로 나눕니다.

 

ID, HP 등등의 변수가 존재합니다.

 

ChataerTable, EnemyTable의 현재 구조가 상위 클래스에서 상속받아 구현할 수 없는 설계상황입니다.

 

그러므로

ICharacterDataAdapter 인터페이스를 만들고

{

   public uint ID();

}

 

PlayerData : ICharacterDataAdapter

{

   CharacterTable Data;

   public uint ID() { return Data.ID; }

}

 

EnemyData : ICharacterDataAdapter

{

   EnemyTable Data;

   public uint ID() { return Data.ID; }

}

 

이렇게 데이터 얻기 클래스를 만들면 여러 코드에서 PlayerType과 EnemyType을

if 문이나 switch 문으로 따로 얻지 않아도 되는 장점이 있습니다.

 

설계구조와 코드가 깔끔해 집니다.

 

의사코드로 몇 라인만 작성해 두었는데 실제 코드는 위에서 얻는 변수량이 많습니다.

그걸 다 if 문이나 switch 문으로 사용하면 코드가 많이 복잡해지겠죠.

 

정확히 아답터 패턴이라고 할 수 있을지 모르겠지만

아답터 패턴에서 아이디어를 얻어서 설계를 수정하였습니다.

 

UML 포함해서 더 자세한 설명을 할 수 있으나 경험담 공유 정도로 하겠습니다.

 

필요하신 분은 생각해 보시고 적용해 보세요.

반응형

'기술 > 디자인 패턴' 카테고리의 다른 글

디자인 패턴  (0) 2017.06.05