아래 코드는 내 디자인 문제를 자세히 설명합니다. 나는 여러 유형의 반복 패턴을 가질 수있는 데이터베이스에 작업 테이블을 가지고있다. 작업 테이블에는 가능한 각 되풀이 패턴 필드에 대한 열이 있습니다. 그러나 Task 개체가 db에있는 패턴을 기반으로 적절한 패턴을 만들길 원합니다. 아래의 코드는이 작업을 수행하지만 문제는 호출 코드가 항상 어떤 작업을 수행하기 전에 반환되는 되풀이 유형을 확인해야한다는 것입니다.OO 모델에 플랫 DB 모델 매핑
var t = new Task();
var pattern = t.Recurrance;
호출 코드에는 어떤 재연 유형이 생성되는지 알지 못합니다.
이것을 모델링하는 더 좋은 방법은 무엇입니까?
class Task
{
private int recurrenceType = 0; //pulled from the db
public Task()
{
//determine recurrence type from database
switch (recurrenceType)
{
case 0:
Recurrance = new RecurrenceDaily();
break;
case 1:
Recurrance = new RecurrenceMonthly();
break;
case 2:
Recurrance = new RecurrenceWeekly();
break;
}
}
public RecurrenceBase Recurrance { get; set;}
}
abstract class RecurrenceBase
{
public int Frequency { get; set; }
}
class RecurrenceDaily : RecurrenceBase
{
public bool Weekends { get; set; }
}
class RecurrenceWeekly : RecurrenceBase
{
public DaysOfWeekFlagsEnum DaysOfWeek { get; set; }
}
class RecurrenceMonthly : RecurrenceBase
{
public byte DayOfMonth { get; set; }
public WeekEnum Week { get; set; }
public DayOfWeekEnum DayOfWeek { get; set; }
}
감사합니다. 반복 속성에 설정을 추가하여 문제를 해결했습니다. –
다른 전화를 사용하고 싶지 않으면 개인 설정자로 지정할 수 있습니다. 아직도, 당신은 나의 처음 두 점을 언급하지 않았다. –