推荐使用的设计模式

时间:2012-11-21 22:20:06

标签: c# entity-framework design-patterns

假设我有非常基本的任务类,如下所示:

public class Task
{
    string Title { get; set; }
}

现在我想添加Planning"行为"到某些我的任务。显然我必须有类似的东西:

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读取并创建我的任务对象?

1 个答案:

答案 0 :(得分:0)

这里似乎有2个不同的问题。 一个是可计划任务的策略算法 - 您可以使用Strategy pattern来处理此问题。 关于不可计划的任务,我看到了两种可能的方法:

  1. 从设计模式的范围中排除它。这是完全可以的,如果不需要,不应该强迫你的设计模式。
  2. 制定2级策略 - 上级选择任务是否可计划,更低级别(仅适用于计划)以应用策略。
  3. 另一个是每个任务的一组可能行为。这可以通过Composite pattern解决。没有行为也是一种行为。