본문 바로가기
개발/기본) 디자인패턴

디자인패턴)KISS Command Pattern (KEEP IT SIMPLE STUPID)

by 테샤르 2022. 4. 5.

KISS Command Pattern (KEEP IT SIMPLE STUPID)

단순하고 멍청하게 유지. 라는 마인드로 개발하는 방식을 말한다.

개발하는 과정에서 복잡한걸 단순화하게 하는 과정으로도 많은 것들이 정리가 되는데

해당 디자인 패턴은 단순하게 하는 필요성을 목적으로 한다.

 

Unity 프로젝트에서 KISS Command Pattern(이하 Kiss 패턴)을 사용할때의 이점은 다음과 같다고 한다.

 

1. 비동기 동작의 간단한 처리

2. 읽을 수 있는 단계 (순서 보장)

3. 관련 없는 시스템의 우호적인 협력 (독립성)

 

반응형

 

< KISS 패턴 예시 >

레벨업하는 과정을 예시는 다음과 같다.

ExecuteLevelUpCommand()
{
  UpdatePlayerProfile()
  SyncWithBackend()
  BlockKeyboardInput()
  wait HandleLevelUpParticles()
  wait HandleLevelUpPopup()
  UnblockKeyboardInput()
}

ExectueLevelUpCommand를 처리하면 

UpdatePlayerProfile - 프로필정보를 갱신하고

SyncWithBackend - 백엔드에 데이터를 동기화처리하고

BlockKeyBoardInput - 입력에 대해서 Block 처리를 진행하고

LevelUp Particles - 레벨업의 파티클 및 연출 처리가 모두 끝날때까지 대기

LevelUp Popup - 레벨업의 팝업 이 모두 끝날때까지 대기

UnblockKeyBoardInput - 입력을 막은걸 제거 한다.

 

순서로 처리가되는걸 알수있다.  

반응형

실질적인 코드 구현부는 다음과 같다.

public interface ICommand
{
	IEnumerator Run();
}
public class LevelUpCommand : ICommand
{
  [Inject] IBackend _backend;
  [Inject] IInput _input;
  [Inject] IPlayerProfile _playerProfile;
  
  public IEnumerator Run()
  {
  	_playerProfile.LevelUp();
    _backend.Sync();
    _input.BlockKeyboard();
    yield return (new HandleLevelUpParticles()).Run();
    yield return (new HandleLevelUpPopup()).Run();
    _input.UnblockKeyboard();
  }
}

 

원본 링크 : [ 링크 ]

 

The "KISS" Command Pattern for Unity

Learn about the lovely KISS Command Pattern in Unity I cannot live without. Enjoy powerful async gameplay systems!

thegamedev.guru

많은 디자인 패턴을 사용하는 것도 좋지만 제일 중요한건 개발의 재사용성, 편의성, 안정성 이라고 생각하는데. 해당 패턴은 가독성과 단순함으로 복잡성을 낮추는 효과가 있는것 같다.

 

 

 

★★★☆☆

 

반응형

댓글