Olá, tudo bem?
Entendo sua preocupação em relação à repetição de código. De fato, é uma boa prática evitar duplicação de código, pois isso pode levar a problemas de manutenção e dificultar a compreensão do código.
No exemplo que você citou, a diferença entre as implementações é apenas uma linha, que é a atribuição da data de publicação do artigo. Nesse caso, criar uma nova implementação apenas para essa pequena diferença pode parecer desnecessário.
É importante considerar o contexto em que essa mudança está sendo feita. No caso do exercício que você mencionou, a mudança solicitada é adicionar a data de publicação do artigo. Nesse cenário, criar uma nova implementação, como a opção B, pode ser uma abordagem mais adequada.
Ao criar uma nova classe, você está seguindo o princípio da responsabilidade única, que é um dos princípios do SOLID. Cada classe deve ter uma única responsabilidade e, nesse caso, a nova implementação está responsável por lidar com a publicação do artigo e a atribuição da data de publicação.
Dessa forma, você mantém a estabilidade da classe original e evita a repetição de código, seguindo as boas práticas de programação orientada a objetos.
Espero ter ajudado e bons estudos!