假设我有非常基本的任务类,如下所示:
public class Task
{
string Title { get; set; }
}
现在我想将规划“行为”添加到我的一些任务中。显然我将不得不有类似的东西:
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
}
问题是:
什么是用于将基本任务类连接到作为选项的具体计划策略的最佳设计模式,这意味着并非所有任务都需要进行计划,即。有规划行为吗?
用户应该有可能“促进”计划中的任务,也可以从特定任务中“删除”这种行为。
这一切如何适用于通过 EF 或其他 ORM 持久化到数据库,特别是在从数据库读取时?哪种模式最适合从 DB 读取并创建我的任务对象?