Olá Angelo
Entendo a sua preocupação em relação ao código repetido e a busca por melhores formas de resolver o problema. É sempre importante buscar aprimorar nossas habilidades e encontrar soluções mais eficientes.
No caso específico do exemplo que você mencionou, a mudança solicitada é registrar a data em que o artigo foi publicado. A alternativa correta para manter a estabilidade da classe seria a opção B:
public class NovaVersaoPublicacaoService : IPublicacaoService
{
public void PublicaArtigo(int idArtigo)
{
var artigo = _dao.ArtigoPorId(idArtigo);
artigo.Situacao = SituacaoArtigo.Publicado;
artigo.DataPublicacao = DateTime.Now;
_dao.Alterar(artigo);
}
}
Essa alternativa cria uma nova classe que herda da interface IPublicacaoService
e adiciona a funcionalidade de registrar a data de publicação. Dessa forma, evita-se a repetição de código e mantém-se a estabilidade da classe original.
Continue estudando e explorando diferentes formas de resolver problemas. Cada situação pode exigir abordagens diferentes e é sempre bom estar preparado para aplicar os princípios da programação orientada a objetos de forma eficiente.
Espero ter ajudado e bons estudos!