state machine - state 와 행동이 늘어남에 따른 기존 소스 수정

유한상태머신은 상태와 행동에 따라 독립적인 클래스로 제어, 교체가 가능하도록 하는 패턴의 하나이다.

스트래티지 패턴과 구현방법이나 목적이 비슷한거 같은데( 사실 다른 점을 모르겠다 ) 다음 두가지에 대해 기존 클래스의 수정 여부가 궁금했다.

  1. state 가 새로 추가된다.
  2. 행동이 새로 추가된다.
  3. state와 행동이 동시에 변경된다.

1번은 새로운 스테이트머신 클래스를 제작하면 되고

2번은 기존의 클래스를 뒤져서 새로운 행동을 다 추가하거나... base class 에 정의해서 이걸 상속받게 한 뒤 특정 몇개만 수정하면 된다.

3번의 경우 이론적으로는 n * m 개의 수정이 필요한데( state수 * 행동수 ) 프로그래밍 고수분께 여쭤보니... 답이 없다고 하신다?

중요한 건 각 스테이트머신을 구현할 때 state 와 의존이 없도록 구현해야 한다.

가령 걷기상태머신의 코드에서

if( 대상.state == 뛰기상태 )

식으로 짜버리면 의존도가 생기므로 다른 상태에 대해선 모르고 있다는 전제로 구현해야 의존성이 줄어들 것 같다.


2015년도에 썼던 글인데 지금 읽어보니 뭔 소린지 모르겠다.

Subscribe to X세대 신입사원

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe
774-86-01972 cinnabar.3d@gmail.com