Java 这些班级之间应该如何分配职责?
我有三个简单的例子。人们有很多项目,有很多任务Java 这些班级之间应该如何分配职责?,java,class-design,Java,Class Design,我有三个简单的例子。人们有很多项目,有很多任务 public class Person { private ArrayList<Project> projects; public Person() { projects = new ArrayList<Project>(); } public printTasks() { //TODO } } public class Project { private String name
public class Person {
private ArrayList<Project> projects;
public Person() {
projects = new ArrayList<Project>();
}
public printTasks() {
//TODO
}
}
public class Project {
private String name;
private ArrayList<Task> tasks;
public Project(String name) {
this.name = name;
tasks = new ArrayList<Task>();
}
public getName() {
return name;
}
}
public class Task {
private String name;
private String description;
public Task() {
tasks = new ArrayList<Task>();
}
public getName() {
return name;
}
public getDescription() {
return description;
}
}
公共类人物{
私人ArrayList项目;
公众人士(){
projects=newarraylist();
}
公共打印任务(){
//待办事项
}
}
公共类项目{
私有字符串名称;
私有数组列表任务;
公共项目(字符串名称){
this.name=名称;
tasks=newarraylist();
}
公共getName(){
返回名称;
}
}
公开课任务{
私有字符串名称;
私有字符串描述;
公共任务(){
tasks=newarraylist();
}
公共getName(){
返回名称;
}
公共描述(){
返回说明;
}
}
我的问题与实现Person.printTasks()的最佳方式有关……我想在标准输出上显示一个人拥有的项目名称列表,在每个项目之后,显示一个项目拥有的任务名称+描述列表
注意:这可能是一个与语言无关的问题,但我碰巧是用Java编写的,我认为对于不同的语言可能会有不同的最佳解决方案,所以我希望至少能够解决Java方面的这个问题。如果它只是用于显示任务名称,而您不希望
Person
依赖于Task
,然后我建议添加一个方法
List<String> getTaskNames();
List getTaskNames();
到项目
类。这就是一个项目应该知道的:它的任务的名称
或者创建一个额外的
taskmatadata
类,该类包含所有属性,用户需要了解任务,并返回taskmatadata
对象的集合。我更喜欢它而不是串接字符串。访问者模式:没有人知道如何打印和打印什么。您只需将项目/人员/任务置于任何关系中,无论它们是访问者对象。项目/人员/任务迭代他们拥有/知道的对象,并将访问者传递给他们
访问者做的事情是正确的——它知道如何从它访问的对象中访问信息,以及信息是否应该打印,以及在哪里:控制台/文件/数据库或其他什么地方,它还知道如何格式化:例如,我想到的xml/html/纯文本/csv
这是你可以自由设计你的项目层次结构,无论你想,改变打印目标和格式等