2009-03-09 5 views
0

저는 도메인 구동 개발과 제어 반전과 같은 여러 가지 사항을 올바르게 가르치기 위해 작은 프로젝트를 시작했습니다.이 경우에는 적용됩니다.비동기 적으로 도메인 모델 로딩

스포츠 이벤트에서 타이밍 데이터를로드하고 시각화 할 수있는 응용 프로그램을 작성하기로 결정했습니다.이 데이터 유형에 액세스 할 수 있습니다.

하나의 요구 사항은 이벤트의 전체 세부 사항 (이벤트 이후에 생성 된 CSV)과 일부 실시간 데이터 소스 인 여러 데이터 소스 중에서 선택할 수 있어야한다는 것입니다.

이 데이터를 동기 및 비동기 로딩에 쉽게 사용할 수 있도록이 데이터를 도메인에로드하는 프로세스를 설계하는 데 문제가 있습니다.

모든 데이터 소스에서 파생 된 추상 클래스가 필요하다고 생각합니다. 이 클래스는 자체 설정 (데이터 파일의 경로, 또는 라이브 데이터 소스 서버의 주소를 얻을) 할 수 있어야하고, 나는 이런 식으로 뭔가 볼 필요가있다 같아요

protected abstract void Setup(); 
protected abstract void LoadData(Race race); 

public Race Load() 
{ 
    Race race = new Race(); 
    Thread t = new Thread(new ParameterizedThreadStart(LoadData)); 
    t.Start(race); 
    return race; 
} 

각 데이터를 소스는 자신의 셋업 메소드를 구현할 수 있습니다. 그러나 이것은 짜증이납니다. 대화 상자 나 뭔가를 보여주는 데이터 소스 클래스의 생각이 맘에 들지 않습니다.

도메인을 채우는 자체 LoadData 메서드를 구현할 수도 있습니다. 라이브 원본의 경우 장기 실행되고 랩타임에 놓이게됩니다. 전체 데이터 소스는 다음과 같이 모델을 채 웁니다. 최대한 빨리

그러나 프런트 엔드는 경쟁 개체에 즉시 액세스 할 수 있으며 해당 이벤트에 바인딩 할 수 있습니다. 이벤트를 미리 설정할 수 있도록 race 메소드를 load 메소드에 전달하는 것이 더 나은가?

이 디자인이 괜찮은지 알고 싶습니다. 그 기분이 나에게 약간 이상하다고 느낀다. 나는 또한 모든 것을 생각하는 것 이상의일지도 모릅니다.

답변

1

"파생 된"클래스를 작성하여 기본 클래스에 대해 걱정할 필요없이 프로그래밍 할 수 있다고 생각합니다. 그런 다음 리팩토링하여 복제본을 제거합니다. 그런 식으로 파생 클래스를 작업하기 전에 기본 클래스에 대해 추측하지는 않습니다.

다른 것들 중에서도, 소비자가 소비되는 데이터에 대해 얼마나 알 필요가 있는지 확인하기 위해 이러한 모든 클래스의 소비자를위한 코드를 작성했는지 확인해야합니다. 예를 들어 부하가 완료되었는지 소비자가 알아야합니까? 아직로드중인 데이터를 표시하는 "좋은 포인트"를 찾아야합니까? 소비자가이 정보가 필요 없다고 판명되면로드 프로세스는 "파생 된"클래스의 구현 세부 사항이되며 공개적으로 노출해야하는 것은 아닙니다.

관련 문제