은 가정하자 내가 아주 기본적인 작업 클래스를 사용합니다.권장 디자인 패턴 (들)을 다음과 같이
public interface IPlannable
{
public void CalculatePlan();
public DateTime Start { get; }
public DateTime Finish { get; }
}
두 개의 콘크리트 알고리즘, 다른 입력 매개 변수와 각 :
public class PlanStrategyA : IPlannable
{
private int parameter1;
private int parameter2;
private DateTime start;
private DateTime finish;
public PlanStrategyA(int p1, int p2)
{
parameter1 = p1;
parameter2 = p2;
}
public void CalculatePlan()
{
// ... uses parameter1 & parameter2
// ... to calculate start and finish
}
public DateTime Start { get { return this.start; } }
public DateTime Finish { get { return this.finish; } }
}
public class PlanStrategyB : IPlannable
{
public int parameter3;
// ... the rest is similar to PlanningStrategyA
}
질문은 다음과 같습니다
는최고의 디자인 패턴 무엇 사용 분명히 내가 좋아하는 뭔가를해야합니다 기본 작업 클래스를 구체적인 계획 전략에 OPTION으로 연결합니다. 즉, 모든 작업이 계획되어야하는 것은 아닙니다. 계획 행동이 있습니까?
사용자는 계획 할 작업을 "승격"하고 특정 작업에서이 동작을 "제거"할 수 있어야합니다.
특히 데이터베이스에서 읽을 때 EF 나 다른 ORM을 통해 데이터베이스에 지속되는 방법은 무엇입니까? 어떤 패턴이 DB에서 가장 잘 읽고 내 작업 객체를 다시 만들 수 있을까요?
답변 해 주셔서 감사합니다. 나는 그렇게 생각하지만, 계획을 세울 필요가 없다면 나에게 무엇을 해야할지 명확하지 않다. 만약 내가 클래스 작업에 변수를 가지면 : 'private IPlannable p;' 태스크가 계획되지 않을 때 null로 유지해야하며 (예 : 인스턴스화되지 않음) "더미"구체적인 전략을 사용하는 것이 좋습니다. 추가 매개 변수없이, 그리고 빈'CalculatePlan()'메소드를 사용하고 있습니까? – buggy08
Answer – SomeWittyUsername
alt (1)에 표시된대로 기본 Task 클래스를 가져야한다는 것을 의미합니까? 추가 변수 IPlannable이있는'class PlannableTask : Task'를 상속합니까? 좋은 접근 방식이라고 생각하지 않습니까? – buggy08