Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设计模式,帮助找到最佳方法_C#_Class_Oop_Design Patterns - Fatal编程技术网

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

C# 设计模式,帮助找到最佳方法,c#,class,oop,design-patterns,C#,Class,Oop,Design Patterns,有一个类任务,它有自己的方法和属性。它是我项目中的一个实体。任务就像一个常规的日常任务,它有日期、标题、正文、实际任务和状态completed/notcompleted,以及上述属性的setter和getter 可以添加新任务,也可以删除任务。根据任务的属性筛选任务、对任务进行排序等。这些操作与Task类型的元素列表相关。问题:任务列表及其相关方法是否应该有单独的类?如果是,任务类和任务列表类之间的关系应该是什么?您可以推荐任何设计模式或特定方法吗?如果您的任务列表只做常规列表,那么您可以创建一

有一个类任务,它有自己的方法和属性。它是我项目中的一个实体。任务就像一个常规的日常任务,它有日期、标题、正文、实际任务和状态completed/notcompleted,以及上述属性的setter和getter


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

如果您的任务列表只做常规列表,那么您可以创建一个列表

如果您想对列表执行一些特殊的操作,例如,将所有任务标记为已完成,那么您可能可以将列表封装在一个名为TaskList的类中。大概是这样的:

public class TaskList : List<Task> {
    // extra methods and stuff
}
public class TaskList : IEnumerable {
    private List<Task> innerList;
}
您询问了任务和任务列表之间的关系。好了,你可以像上面这样使用继承。或者,您可以在类中存储List的私有实例,如下所示:

public class TaskList : List<Task> {
    // extra methods and stuff
}
public class TaskList : IEnumerable {
    private List<Task> innerList;
}

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

如果你的任务列表只做常规列表,那么你可以创建一个列表

如果您想对列表执行一些特殊的操作,例如,将所有任务标记为已完成,那么您可能可以将列表封装在一个名为TaskList的类中。大概是这样的:

public class TaskList : List<Task> {
    // extra methods and stuff
}
public class TaskList : IEnumerable {
    private List<Task> innerList;
}
您询问了任务和任务列表之间的关系。好了,你可以像上面这样使用继承。或者,您可以在类中存储List的私有实例,如下所示:

public class TaskList : List<Task> {
    // extra methods and stuff
}
public class TaskList : IEnumerable {
    private List<Task> innerList;
}

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

虽然我几乎不能在@Sweeper的注释中添加任何内容,但在问我是否应该创建一个新类时,这可能是一个有用的问题?该潜在对象是否既知道事情又做事情,例如既有数据又有方法

在您的示例中,可能的任务列表方法可能是CompleteAll或Share。如果要实现这些,请创建一个TaskList类。如果没有,请使用列表。更好的是,让所有处理集合的方法都依赖于IEnumerable或ICollection—使用列表构建第一个版本,然后重构以传递一个任务列表,该任务列表将按照Sweeper的建议从列表继承


我认为你被否决的原因是这个问题应该属于程序员,而不是程序员。对于解决特定问题来说,程序员更具开放性,所以像你这样的问题就属于这里

虽然我几乎无法为@Sweeper的评论添加任何内容,但在问我是否应该创建一个新类时,这可能是一个有用的问题?该潜在对象是否既知道事情又做事情,例如既有数据又有方法

在您的示例中,可能的任务列表方法可能是CompleteAll或Share。如果要实现这些,请创建一个TaskList类。如果没有,请使用列表。更好的是,让所有处理集合的方法都依赖于IEnumerable或ICollection—使用列表构建第一个版本,然后重构以传递一个任务列表,该任务列表将按照Sweeper的建议从列表继承


我认为你被否决的原因是这个问题应该属于程序员,而不是程序员。对于解决特定问题来说,程序员更具开放性,所以像你这样的问题就属于这里

我将使用您描述的方法添加ToDoList抽象。利用抽象数据类型和封装很好。这就是OO的全部内容。我想用您描述的方法添加一个ToDoList抽象。利用抽象数据类型和封装很好。这就是OO的意义。谢谢。我会听从你的建议。非常有用。懒惰的程序员都是优秀的程序员。谢谢。我会听从你的建议。非常有用。懒惰的程序员都是优秀的程序员。