回答:
読み取りと書き込みの実装は、非常に凝集性が高い可能性が高いです。一方が変わると、もう一方も変わります。凝集度が高いことは、単一の責任を強く示すものであり、単一の責任の原則は、それらを同じクラスにまとめる必要があることを示しています。これらの操作の凝集度が低い場合、それらを分割すると保守性が向上する可能性があります。
ただし、書き込みなしでデータを読み取るだけの消費者、または読み取りなしで書き込みのみを行う消費者がいる場合、インターフェイスの観点から、インターフェイス分離の原則で規定されているようにこれらの操作を分離する必要があります。つまり、消費者は依存できる2つのインターフェイスを定義する必要がありますが、File
クラスは両方のインターフェイスを実装します。
他の答えのほとんどは、あなたの質問に重要な情報が欠けていることを見落としているようです-あなたが読み書きしようとしている文書が関連しているかどうか、そしてどのように関連しているか教えてくれませんでした!
アプリケーションに「ドキュメントオブジェクト」のようなものがあり、それを最初にPDFファイルに書き込み、次に同じファイルを再び類似のドキュメントオブジェクトに読み込みますか?またはその逆に、PDFをドキュメントに読み込み、それにいくつかの変更を加え、同じドキュメントを新しいPDFに再度保存しますか?それから、読み書きは一つの責任とみなされるべきです。アプリケーションが「PDFエディター」コンポーネント、または「PDF操作ツールキット」のようなものを含んでいるか、または含んでいる場合がこれに該当します。
ただし、アプリケーションの一部がレポートコンポーネントなどでPDFファイルを作成し、アプリケーションの別の無関係な部分が異なるPDF(たとえば、検索エンジンのメール添付ファイルエバリュエーター)を読み取り、後者のPDFには最初のユースケースとの共通点はないため、これらのタスクの役割は異なります。
特にPDFの場合、その2番目のユースケースは、さまざまな種類のアプリケーションで頻繁に見られるケースです。PDFの作成をサポートするライブラリ/コンポーネントははるかに多く、PDFの読み取りもサポートするライブラリ/コンポーネントはごく少数です。1つのライブラリを使用してPDFファイルを生成し、まったく異なるライブラリを使用してPDFを読み取る場合は、PDFの読み取りと書き込みが別々の責任であることは明らかです。