2011-11-10 2 views
0

전 화면, 창 및 최소화 된 세 가지 상태를 가진 클래스가 있습니다. setState:showState:,해야 내가 몇 일에 이러한 조치 : 나는 State 변경할 때마다, 나는 두 가지 방법을 호출하고 있다면 내 객체의 상태는OOP : 상태 설정과 그것을 보여주는 커플 링?

typedef enum { 
    StateFullScreen, 
    StateWindowed, 
    StateMinimized 
} State; 

열거 형식으로 저장됩니다? 예를 들어, 합성 된 setState: 메서드를 오버라이드하고 상태에 따라 적절하게 showState: 메서드를 호출 할 수 있습니까? 아니면 showState: 번으로 setState: 번으로 전화해야합니까?

객체 지향 디자인의 경우 이러한 좋은 프로그래밍 실습 중 하나가 있습니까?

답변

1

제 의견으로는 setState에서 모든 작업을 수행하는 것이 더 좋을 것입니다. 이것은 여러분의 클래스를 사용하는 누군가가 기대하는 것입니다.

상태 클래스에 연결, 연결 해제, 온라인 및 오프라인이 있습니다. setStatus를 호출하면 대리자 메서드가 호출되고 연결이 끊어 지거나 오프라인 상태가되면 새 세션의 연결이 끊어집니다.

2

ChangeState (...) 메서드를 만드는 것이 고려 되었습니까? 다른 두 메서드를 호출하는 첫 번째 패스 리팩터링을 만드는 것만으로도 간단합니다. 그런 다음 추가 리팩터링을 통해 완벽하게 정리할 것입니다.

+0

나는 당신을 표결했지만, 나는이 방법을 다른 사람들 없이도 호출 할 수있는 방법을 보지 않고이 길로 갈 것이라고 생각하지 않는다. – john

+0

그런 다음 비공개로 만들고 ChangeState()에서 호출하십시오. –

관련 문제