2011-12-21 3 views
0

내 응용 프로그램에서 C++에서 나는 MVC 패턴을 사용하고 있습니다. 나는 많은 모델 객체들과 그 객체들로부터 취할 수있는 액션 목록을 가지고있다. 그렇지 않은 경우 objectB가 표시됩니다 또는 objectC이 표시되는 경우MVC 컨트롤러 사용 안 함 제어

  • 내가 objectA 표시 할 수 없습니다,
  • 및 objectA에 어떤 작업을 수행 할 수 없습니다하지만 행동은 몇 가지 조건이 충족되는 경우에만 수행 할 수 있습니다 표시
  • 다른 더 복잡한 조건

그래서 특정 클래스의 객체가 순간에 유효한 조치가 있는지 확인합니다 클래스가하는 생각을했다 :

AActionValidator 
{ 
bool CanDoX(); 
bool CanDoY();   

}; 
BActionValidator 
{ 
    bool CanDoZ(); 
}; 

Controllers 클래스는, 특정의 조작이 사용 가능한 경우에이 ActionValidator에 요구합니다. 그렇다면, 조작을 실시합니다.

우려 사항 1 : 하지만 일부 동작을 사용할 수 없거나 사용할 수 없을 때 자동으로 ui 컨트롤을 사용/사용하지 않도록 설정하는 방법은 무엇입니까? 이러한 ActionValidators 클래스도 이러한 일이 발생할 때 어떤 이벤트를 방출해야한다고 생각하십니까? 하지만 내 Ui 컨트롤은 다른 ActionValidator 클래스의 이벤트에 연결해야합니다.

우려 사항 2 : 이벤트를 내보내는 하나의 전역 ApplicationActionManager 클래스가 있고 응용 프로그램 전체의 모든 개체에 대한 유효한 동작에 대한 정보를 저장하는 것이 더 좋을까요? 하지만 결국 하나의 커다란 비 일관적인 클래스가 될까 봐 걱정됩니다.

우려 3 : ObjectA가 표시된 경우 컨트롤러는 표시 버튼을 사용하지 않도록 설정하고 숨기기 버튼을 활성화 할 수도 있습니다. 컨트롤 상태를 업데이트하는 컨트롤러의 작업입니까? 아니면 쇼/숨겨진 상태를 이벤트로 방출해야합니까?

이것이 어떻게 수행되는지에 대한 통찰력. 감사합니다.

답변

0

여기에 무엇을 얻는 지 완전히 이해하고 있는지 잘 모르겠지만 이전에 MVC 프레임 워크를 사용하여 비슷한 점을 시도해 보았습니다.

나는 일반적으로 모델에서 유효성 검사를 구현합니다 (그렇다고하더라도 그렇게할만한 것은 아닙니다!). 오브젝트의 유효성을 변경할 수있는 모든 조치는 뷰를 갱신해야하는 오브젝트 특성이 설정된 후 제어기에서 유효성 검증 기능을 호출해야합니다.

순수 가상 기본 클래스를 사용하면 개체 수준에서 유용 할 수 있습니다. 예를 들어 모든 객체가 구현해야하는 CanDoAction() 순수 가상 함수가 있으면 objectA가 표시되지 않으면 false를 반환 할 수 있습니다. 그런 다음 모델 유효성 검사 기능을 사용하여 일종의 계층 적 유효성 검사 프로세스를 제공해야하는 개체 간의 종속성을 구현할 수 있습니다.

나는 그것이 일종의 이해가되기를 바랍니다.