Sebagian besar jawaban lain tampaknya telah mengabaikan bahwa dalam pertanyaan Anda satu informasi penting hilang - Anda tidak memberi tahu kami jika dan bagaimana dokumen yang akan Anda baca dan tulis terkait!
Apakah aplikasi Anda memiliki sesuatu seperti "objek dokumen" dan menulisnya ke dalam file PDF terlebih dahulu, dan kemudian membaca file yang sama lagi menjadi objek dokumen yang serupa? Atau sebaliknya, itu membaca PDF menjadi dokumen, membuat beberapa modifikasi untuk itu dan menyimpan dokumen yang sama ke PDF baru lagi? Maka membaca dan menulis harus dilihat sebagai satu tanggung jawab. Itu mungkin terjadi jika aplikasi Anda adalah atau mengandung sesuatu seperti komponen "editor PDF", atau "toolkit manipulasi PDF".
Namun, jika satu bagian dari aplikasi Anda membuat beberapa file PDF, misalnya, dalam komponen pelaporan, dan bagian lain yang tidak terkait dari aplikasi Anda membaca PDF yang berbeda (misalnya, evaluator lampiran surat untuk mesin pencari), dan representasi internal dari PDF yang terakhir tidak memiliki kesamaan dengan use case pertama, maka tugas-tugas tersebut adalah tanggung jawab yang berbeda.
Khusus untuk PDF, kasus penggunaan kedua adalah kasus yang saya lihat lebih sering di berbagai jenis aplikasi. Ada lebih banyak perpustakaan / komponen di luar sana yang hanya mendukung pembuatan PDF, dan hanya sejumlah kecil yang mendukung juga membaca PDF. Jika Anda akan menggunakan satu perpustakaan untuk menghasilkan file PDF, dan yang sama sekali berbeda untuk membaca PDF, maka harus jelas bahwa membaca dan menulis PDF akan menjadi tanggung jawab terpisah.
Menurut ( Robert C. Martin ) tanggung jawab adalah seperangkat fungsi yang melayani satu aktor tertentu.
Seorang aktor harus menjadi satu-satunya sumber perubahan dari responsabilitas yang diberikan (seharusnya hanya ada satu alasan untuk berubah).
Dalam kasus Anda, pertama-tama Anda harus mendefinisikan aktor sebagai langkah pertama, lalu ajukan pertanyaan:. Apakah ada aktor yang tertarik hanya dengan membaca file dan lainnya dengan menulis?
Jika demikian halnya maka membaca dan menulis file adalah dua tanggung jawab terpisah. Karena akan ada banyak sumber perubahan (banyak aktor mungkin meminta untuk mengubah logika membaca dan hal yang sama untuk menulis).
sumber