예를들면 


워리어 컨트롤러 같은 클래스가 조작에 관한 상태머신과 각 상태를 new로 생성한다고 할때,


'워리어 컨트롤러'

     '워리어 상태머신'

           '워리어 상태 A'

           '워리어 상태 B'

           ...


이런 구조로 만들어지는데, 상태머신도 그렇고, 각 스테이트들이 아무래도 워리어 컨트롤러의 멤버변수 (private)를 많이 사용하는게 당연하잖아요?


각 스테이트 A,B에서 워리어컨트롤러 클래스의 멤버변수를 가져와서 변경해야 할 경우가 생기는데 private라서 사용하기가 어렵습니다.


해결법을 찾아보니 


1. 워리어 컨트롤러 변수를 모두 public 선언 or 프로퍼티로 선언 후 각 스테이트에서 받아서 처리


2. 워리어 컨트롤러 변수를 '박스'로 묶어서 넘겨줌


3. 워리어 컨트롤러 내부에 메소드를 정의하고 각 스테이트에서 해당 메소드를 불러서 사용함



상태머신 및 상태A,B에서 자기 클래스의 변수인 것 처럼 '워리어 컨트롤러'의 멤버변수를 사용할 수 있으면 좋을텐데, 보통 위의 3개의 해결법 중 하나로 처리하시나요?