2011-02-07 6 views
1

상태 디자인 패턴을 사용하여 코드를 재 설계하고 싶습니다. 상태는 특정 객체에 속합니다.상태 디자인 패턴을 사용한 재 설계 - 의심

예 : ST1, ST2, ST3 :

클래스 A는 세 가지 상태 일 수 있습니다.

마찬가지로, 다른 클래스 B는 2 가지 상태, 즉 st4, st5를 가질 수 있습니다.

클래스 C의 상태가 st1 및 st4 및 st5 인 경우가 있습니다.

기본적으로 이러한 상태는 복잡한 개체의 경우 교환 할 수 있어야합니다.

또한 이러한 클래스 A, B 및 C에는 주에서 사용하는 데이터가 포함되어 있습니다.

내 질문은입니다. 상태 시스템은 어떻게 디자인해야합니까? 모든 반에 대해 개별 SM이 있어야합니까? 모든 주들이 공통 기본 인터페이스를 가질 수 있습니까?

제발 도와주세요; 더 많은 정보가 필요하면 더 많은 질문을 할 수 있습니다.

답변

1

, 모든 클래스 개별 SM이 있어야한다?

귀하의 설명을 이해하는 경우 대답은 "예"이며, 각 개체는 자체 상태 시스템이 필요합니다.

모든 주에는 공통 기본 인터페이스가있을 수 있습니까?

공용 인터페이스는 여러 구현이있는 공통 API를 의미합니다. 각 주마다 공통적 인 방법은 무엇이며, 구현은 주마다 어떻게 다릅니 까?

다른 동작이없는 경우 각 상태에 대한 클래스가 필요하지 않을 수 있습니다. 상태 컬렉션과 상태 컬렉션 및 전환을 관리하는 규칙을 관리하는 FSM 만 있으면됩니다.

+0

제안을 주셔서 감사합니다.이 접근법은 초기 시작에 좋게 보입니다. 기존 코드의 모든 기능에 대해 논의가 끝나면 더 자세한 내용을 설명 할 수 있습니다. – wthomas

0

많은 보편적 인 코드를 생성하는 경향이 있으므로 제 겸손한 경험으로 상태 디자인 패턴을 사용하는 것이 다소 어려워졌습니다. 나는 보통 문제의 표준 함수 포인터 방식을 선호한다. 객체/상태가 너무 크거나 복잡하지 않은 경우 더 쉬운 방법입니다.

my2c

내 질문이 얼마나 상태 시스템이 설계되어야한다
+0

개체가 작고 상태가 너무 많지 않다는 것이 맞다고 생각하지만 제 경우에는 확장 가능한 디자인을 원합니다. 함수 포인터를 사용하는 것은 즉각적인 해결책 인 것 같습니다. 유지 보수에 약간의 노력이 필요하다고 느낍니다. – wthomas

+0

@wthomas : 악마가 세부 사항에 있습니다. 코드를 사용해보십시오! – neuro