デカップリングについてのあなたの理解に同意しません。デカップリングは、どのオブジェクトが他のオブジェクトを作成するかだけでなく、どのオブジェクトが他のオブジェクトの動作を認識し、(重要な)Wordが変更された場合に(例の)ドキュメントで何を変更する必要があるかについても重要です。
しかし、私はこれらの2つのフレーズが何を意味するのか本当に理解していません。
Word用とDocument用のオブジェクトが1つだけあります。新しいドキュメントや単語ごとに新しいオブジェクトを作成するわけではありません。ドキュメント全体のリストをDocumentに保存し、単語全体のリストを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);を含めることができます。等々。
より良い議論をするために、私たちはあなたが考えていたものをもう少し、行動についてもう少し見る必要があります。
私は、文書と言葉以外のものがそこにあるというあなたの一般的な考えに同意します。createDocument()やinsertParagraph()などのメソッドを合理的に呼び出すことができるもの