设计模式,帮助找到最佳方法

时间:2016-07-11 14:51:14

标签: c# class oop design-patterns

有一个类Task,它有方法和属性。它是我项目中的一个实体。任务就像一个常规的日常任务,它的日期,标题,正文(实际任务)和状态已完成/未完成,以及上述属性的设置者和获取者。

可以添加新任务或删除任务。根据其属性过滤任务,对它们进行排序等。这些操作与Task类型的元素列表相关。问题:对于任务列表及其与列表相关的相应方法,是否应该有单独的类?如果是这样,Task类和TaskList类之间的关系应该是什么?您可以推荐任何设计模式或特定方法吗?

2 个答案:

答案 0 :(得分:3)

如果您的任务列表除了常规列表之外没有其他任何操作,那么恕我直言,您只需创建List<Task>即可。

如果您想对列表执行一些特殊操作,比如将所有任务标记为已完成,那么您可以将List<Task>封装在名为TaskList的类中。像这样:

public class TaskList : List<Task> {
    // extra methods and stuff
}

您询问了任务与任务列表之间的关系。那么,你去,你可以像上面这样使用继承。或者,您可以在类中存储List<Task>的私有实例,如下所示:

public class TaskList : IEnumerable {
    private List<Task> innerList;
}

但是你必须实现更多的方法,比如AddRemoveGetEnumerator等。我有点懒,所以我会坚持使用第一种方法。

答案 1 :(得分:2)

虽然我几乎不能在@ Sweeper的评论中添加任何内容,但在询问时我可能会提出一个有用的问题吗?我应该创建一个新类吗?&#34;是&#34;这个潜在的对象既知道事情又做事情(例如同时拥有数据和方法)?&#34;

在您的示例中,可能的TaskList方法可能是CompleteAllShare。如果您要实施这些,请创建一个TaskList课程。如果没有,请使用List<Task>。更好的是,使所有处理集合的方法都依赖于IEnumerable<Task>ICollection<Task> - 使用List<Task>构建您的第一个版本,然后重构以传递一个继承自List的TaskList正如Sweeper建议的那样。

我认为你得到这个问题的原因是这个问题属于程序员,而不是SO。 SO用于解决特定问题,程序员更开放,所以像你这样的问题属于那里。 https://softwareengineering.stackexchange.com/

相关问题