A implementação de leitura e escrita provavelmente tem uma alta probabilidade de ser altamente coesa. Se um mudaria, o outro mudaria. Coesão alta é uma forte indicação de uma responsabilidade única e o princípio de responsabilidade única nos diz que eles devem ser reunidos na mesma classe. Se essas operações tiverem baixa coesão, é provável que sua divisão melhore a capacidade de manutenção.
Se, no entanto, houver consumidores que apenas leem dados sem gravar, ou apenas escrevem sem ler, é uma indicação de que, de uma perspectiva da interface, você deve separar essas operações, conforme prescrito pelo Princípio de Segregação da Interface. Isso significa que os consumidores devem definir duas interfaces nas quais podem confiar, enquanto a File
classe implementará as duas interfaces.
De acordo com ( Robert C. Martin ), uma responsabilidade é um conjunto de funções que serve a um ator em particular.
Um ator deve ser a única fonte de mudança de uma determinada responsabilidade (deve haver apenas um motivo para mudar).
No seu caso, você deve primeiro definir os atores como um primeiro passo e depois fazer as perguntas:. Existem atores interessados apenas na leitura de arquivos e outros na escrita?
Se for o caso, a leitura e gravação de arquivos são duas responsabilidades separadas. Porque haverá várias fontes de mudanças (muitos atores podem pedir para alterar a lógica de leitura e a mesma coisa para escrever).
fonte