나는 많은 상태가있는 상태 기계가 A--B--C--D--E
입니다. 어떤 조건이 확인되면 나는 에서 예를 들어 A
으로 많은 전환을합니다. 모든 상태에 대해 나는 abstract 클래스 State
을 확장하는 클래스를 가지고 있으며, 모든 메소드를 상태 메소드에 위임하는 관리자가 있습니다. 문제는 "주정부가 직접 관리자 전환 방식을 호출 할 수 있습니까?"입니다. 나는 전환이 얼마나 많이 일어 났는지를 아는 메인 클래스 (예 : insertQuarter()
, ejectQuarter()
, turnCrank()
, dispense()
)가있는 인터넷에서만 예제를 보았습니다. 이 작업을 수행하는 유일한 방법은 상태에서 관리자 전환 메서드를 호출하는 것입니다. 이 잘못되었거나 나쁜 관행입니까? 사전에상태 디자인 패턴의 전환 방법
감사 Tobia
귀하의 제안에 따라, 주정부는 다음 주를 결정하지 않기 때문에 주정부 패턴이 사용되지 않습니다. 권리? – Matroska
@Matroska : 이해할 수있는 상태 디자인 패턴의 아이디어는 일부 실행 메커니즘에 대한 참조를 저장하고 명령을 위임하는 것입니다. 실행자는 행동 변경이 필요한 언제든지 바꿀 수 있습니다. 필자가 제안한 디자인에서 관리자는 현재 상태에 대한 참조를 저장하고 모든 전환 후에이 참조를 변경하기 때문에 패턴을 사용한다고 생각합니다. –
@Matroska : 내 접근 방식이 Wikiperia의 예와 다른 점에 동의합니다. 그러나, 나는 그것이 상태 기계를 구현하는 더 깨끗한 방법이라고 생각한다. 주정부는 서로에 대해 알 필요가 없습니다. –