我有一个简单的问题(使用Java)。我有两个类,一个代表一个文档,另一个代表一个单词。
文档类需要了解一些保存在Word中的单词的信息。我的问题是,分离这两个类的最好方法是什么?我有两个选择:
有一件事要注意,我只有一个字对一个对象和一个文档对象。我不为每一个新文档或单词创建一个新对象。我将整个文档的列表存储在文档中,将整个单词的列表存储在Word中。
谢谢!
发布于 2010-08-17 20:14:05
我不同意你对脱钩的理解。解耦不仅涉及哪些对象创建其他对象,还涉及哪些对象了解其他对象的行为,以及(关键是)如果单词发生变化,文档中需要更改什么(示例)。
不过,我也不明白你所说的这两个短语是什么意思:
我只有一个对象表示Word,一个对象用于文档。我不为每一个新文档或单词创建一个新对象。我将整个文档的列表存储在文档中,将整个单词的列表存储在Word中。
从文件开始。这个类的对象可以做什么?你好像在说
class Document {
private List<??OfWhat??> allDocuments;
}如果类文档包含一个列表,它是什么列表?我觉得你需要:
class Shelf {
private List<Document> allDocuments;
}
class Document{
private List<Word> wordInOneDocument;
}
class Word {
private String wordContents;
}现在,Shelf可以提供诸如getRecentDocumets()、findDocumentsContaining(字符串文本)等方法,而文档可以包含getWordCount()和insertParagraph(列表、开始)等。
为了进行更好的讨论,我们需要更多地了解你的想法,更多地了解你的行为。
我同意你的一般想法,那就是除了文件和文字之外,还有别的东西。可以合理调用方法的东西,如createDocument()和insertParagraph()
发布于 2010-08-17 19:52:27
在我看来..。
public class Document{
private List<Word> words = new ArrayList<Word>();
public void setWord(ArrayList<Word> words){this.words = words;}
public ArrayList<Word> getWord(return this.words;)
}这是个合理的方法。在本例中,您可以创建一个Document,而不需要任何Word's,这将生成一个空文档,该文档是有效的。
你仍然可以像你建议的那样创建一个三级,但是,我看不出它有什么好处。
发布于 2010-08-17 19:59:39
你的问题应该通过作文来解决。因此,拥有一个Word列表似乎是一种有效的方法。通过分离文档和文字,您已经实现了所需的去耦合。我不知道你的解耦合文档和Word对象的确切位置。
https://stackoverflow.com/questions/3506324
复制相似问题