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

本文关键字:最佳 方法 帮助 设计模式 | 更新日期: 2023-09-27 17:56:16

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

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

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

如果您的任务列表比常规列表没有做更多的事情,那么恕我直言,您可以创建一个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等。我有点懒,所以我会坚持使用第一种方法。

虽然我几乎不能在@Sweeper的评论中添加任何东西,但在问"我应该创建一个新类吗?"时,也许一个有用的问题是"这个潜在的对象是否既知道事情又做事(例如,同时具有数据和方法)?"

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

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