Die Lese- und Schreibimplementierung weist wahrscheinlich eine hohe Wahrscheinlichkeit auf, sehr kohäsiv zu sein. Wenn sich eines ändern würde, würde sich das andere ändern. Ein hoher Zusammenhalt ist ein starkes Indiz für eine Einzelverantwortung, und das Prinzip der Einzelverantwortung besagt, dass sie in derselben Klasse zusammengefasst werden sollten. Wenn diese Operationen eine geringe Kohäsion aufweisen, besteht die Möglichkeit, dass durch Aufteilen die Wartbarkeit verbessert wird.
Wenn es jedoch Konsumenten gibt, die Daten nur lesen, ohne zu schreiben, oder nur schreiben, ohne zu lesen, ist dies ein Hinweis darauf, dass Sie diese Operationen aus Sicht der Schnittstelle gemäß dem Prinzip der Schnittstellentrennung trennen sollten. Dies bedeutet, dass die Konsumenten zwei Schnittstellen definieren sollten, auf die sie sich verlassen können, während die File
Klasse beide Schnittstellen implementiert.
Laut ( Robert C. Martin ) ist eine Verantwortung eine Reihe von Funktionen, die einem bestimmten Schauspieler dienen.
Ein Akteur sollte die einzige Änderungsquelle für eine bestimmte Verantwortung sein (es sollte nur einen Grund für eine Änderung geben).
In Ihrem Fall sollten Sie zuerst die Akteure als ersten Schritt definieren und dann die Fragen stellen:. Gibt es Schauspieler, die sich nur für das Lesen von Dateien und andere für das Schreiben interessieren?
In diesem Fall sind das Lesen und Schreiben von Dateien zwei getrennte Aufgaben. Da es mehrere Änderungsquellen gibt (viele Akteure möchten möglicherweise die Leselogik und das Gleiche zum Schreiben ändern).
quelle