2009-04-03 10 views
0

온라인 코스를 관리하는 응용 프로그램을 작성하고 있습니다. 코스는 다양한 방법으로 완성됩니다. 사용자는 물론 완료하기 위해 하나 이상의 후속 이상을 수행해야합니다 이 애플리케이션의 디자인 패턴은 무엇입니까?

  • 이 시험을하는 과정에서 시간의

    • 지출 X 금액 및 합격 점수는 모든 코스 다를 수 있습니다 (테스트를 통과)
    • 는 과정에서이 과정이 완료되면, 어떤 이벤트가 발생 할 필요가 아직

    모르는

  • 다른 요구 사항을 모든 교훈을. 이벤트는 코스에 따라 다릅니다. '

    사용자 지정 인증서가
  • 조직이 이메일, HTTP 콜백, 또는 뭔가 다른 통해 경고 한 사용자에 대한
  • 다른 요구 사항을 작성
    • 당신이 돈 다음 중 하나 이상이 발생할해야 할 수도 있습니다 아직 알지 못함

    대부분의 과정은 요구 사항과 거의 동일하지만 일부는 완전히 고유합니다. 50 개 이상의 코스가 많이 있으며 항상 더 많은 코스가 추가됩니다.

    어떻게 이런 응용 프로그램을 설계 하시겠습니까? 중복 된 코드를 제거하고 코스를 쉽게 추가/편집 할 수있는 디자인 패턴이 있습니까?

  • +2

    이것은 숙제와 비슷합니다. 그렇다면 여기에 묻는 것으로 속임수로하지 말고 직접 해보십시오 .-) – lothar

    답변

    1

    ...

    당신은 요구 사항 개체를 받아들이는 과정 오브젝트를 가지고 있고 OnCompleteActions는 생성자에서 객체 ... 부여 다른 코스를 모두 빌드하는 방법을 알게되지만 ...

    코스가 업데이트 될 때마다 요구 사항이 충족 될 때 요구 사항이 충족되는지 확인합니다. 요구 사항을 충족하면 자체를 OnCompleteActions에 전달합니다.

    private void OnCourseUpdate() 
    { 
         if (this._Requirements.AreMetBy(this)) 
         { 
          this._OnCompleteActions.Execute(this); 
         } 
    } 
    

    Requiremetns 객체를 사용하면 원하는 작업 ... AreMetBy 방법 간단한 있는지 확인하려면 목록에서 IRequirements 및 모든 검사를 열거 만드는 과정에 따라 미세 조정할 수 IRequirement의 총 목록에 불과하다 당신의 이 과정은 ...

    class CourseHoursRequirement : IRequirement 
    { 
        public CourseHoursRequirement(int minimumHours) 
        {...} 
    
        public bool IsMetBy(Course course) 
        { 
         return course.NumberHours >= this._MInimumHours 
        } 
    } 
    

    동일한 ID

    interface IRequirement 
    { 
        public bool IsMetBy(Course course); 
    } 
    

    는 그런 다음 IRequirement을 구현하는 다른 요구 사항의 모든 종류를 가질 수 ... 그들 모두를 만족 OnCompleteActions에는 각각을 실행하는 IOnCompleteAction 중 하나 이상의 목록이 있습니다. 전의.CreateCertificateOnCompleteAction, SendEmailOnCompleteAction 등 그런 다음 그들은 모두 구현하고 있기 때문에 당신이가는대로 쉽게 새로운 요구 사항을 추가 할 수 등 MinimumHourRequirement하는 PassedAllTestRequirement을 것 과정을 구축 할 수 있습니다 자신의 수업 시간에 가능한 각 요구 사항을 캡슐화함으로써

    같은 인터페이스. 최소한 minimumHours와 같이 몇 가지 제한 속성을 추가해야하지만 실제 작업은 IsMetBy() 메서드 내부에서 수행됩니다.

    행운을 빈다!

    +0

    그게 많은 도움이됩니다. 고맙습니다. –

    +0

    다른 도움이 필요하면 알려주세요 ... – bytebender

    1

    최종 단계를 처리하기위한 메시지 버스와 상태를 확인하기위한 상태 시스템. 실제로이 모든 것은 메시지 버스를 사용하여 수행 할 수 있습니다. 이 책을 읽으려면 기업 통합 패턴 (Enterprise Integration Patterns)이 좋다. 까다로운 부분은 소프트웨어로 인해 학생들이 신용을 잃지 않도록하는 결함을 확인하는 것입니다.

    아마도 jms/esb fever가있을 수 있습니다. 내가 생성자 내부 확인하고 CourseBuilder 만들기 것이라고 나는 그것을 밖으로 스케치 시작하는 것입니다 방법은 다음과

    0

    어떤 코스에도 필요한 고정 단계가 있으므로 여기에서 템플릿 패턴을 사용할 수 있습니까? Like

    interface Course{ 
    timeSpent(); 
    testTaken(); 
    lessonLearnt(); 
    miscllenious(); 
    
    } 
    

    모든 코스는이 인터페이스를 구현하고 그에 따라 메소드를 구현합니다. 내가 이해했는지 여부를 분명히 알 수 있도록 의견을 제시해주세요.

    관련 문제