gpt4 book ai didi

java - 解耦——OOP

转载 作者:行者123 更新时间:2023-12-01 17:38:52 25 4
gpt4 key购买 nike

我有一个简单的问题(使用 Java)。我有两个类,一个代表文档,第二个代表单词。

Document 类需要了解有关 Word 中保存的单词的一些信息。我的问题是,解耦这两个类的最佳方法是什么?我心里有两个选择:

  1. 类之间没有联系,每次我调用 Document 中的方法时,我都会向它传递一个 Word 对象(因此我有第三个类,其中的 main 方法启动文档和 Word)。

  2. 在 Document 中声明 Word 的私有(private)对象。

需要注意的一件事是,我只有一个用于 Word 的对象和一个用于 Document 的对象。我不会为每个新文档或单词创建一个新对象。我在 Document 中存储整个文档的列表,在 Word 中存储整个单词的列表。

谢谢!

最佳答案

我不同意你对解耦的理解。解耦不仅仅涉及哪些对象创建其他对象,还涉及哪些对象了解其他对象的行为,以及(最重要的是)如果 Word 发生更改,需要更改(您的示例)文档中的哪些内容。

但是,我也真的不明白你这两个短语的意思:

I only have one object for Word and one for Document. I don't create a new object for every new document or word. I store a list of the entire documents in Document, and a list pf the entire words in Word

从文档开始。这个类的对象可以做什么?你好像是这么说的

class Document {

private List<??OfWhat??> allDocuments;
}

如果类 Document 包含一个列表,那么它的列表是什么?我认为你需要:

class Shelf {
private List<Document> allDocuments;
}

class Document{
private List<Word> wordInOneDocument;
}

class Word {
private String wordContents;
}

现在,Shelf 可以提供 getRecentDocumets() findDocumentsContaining(String text) 等方法Document 可以包含 getWordCount() 和 insertParagraph(List, START);等等。

为了更好地进行讨论,我们需要更多地了解您的想法,更多地了解您的行为。

我确实同意您的总体想法,即除了 Document 和 Word 之外还有其他东西。可以合理调用 createDocument() 和 insertParagraph() 等方法的东西

关于java - 解耦——OOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3506324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com