Executando verificação de segurança...
1

Uso de classes filhas para proteger outros atores que herdam a mesma classe mãe. É adequado?

Suponhamos que 4 gerentes(setores/expert domains) usam a Classe A, mas como não quero que uma alteração na Classe A afete todos os gerentes, eu crio uma Classe intermediária para cada gerente (B1, B2, B3 e B4) que herda a Classe A.

Assim, se eu precisar alterar algo pra algum gerente, eu altero na classe intermediária (B1, B2, B3 ou B4).

Isso está correto? É algum patter?
Parece que o princípio da Segregação de interface tem algo a ver, porém acho que esse princípio diria pra por na interface somente o que vai usar, e não separar pra permitir alterações isolada, como no caso...

E aproveitando a deixa, num caso como este acima, porque eu criaria uma interface e teria que implementar o mesmo código para cada gerente, se eu poderia criar uma Classe e dar um Override quando precisar alterar??

1

Fala Roney, eu entendo sua dúvida em como melhor usar herança (na programação orientada a objetos), mas acho que você está focando muito em teoria e perdendo a ligação com a prática.

Digo isso pois o exemplo em si não é muito factível. Pra não dizer impossível, é raríssimo que um programa tenha uma classe filha para cada especialista interessado. Sei que exemplos assim são dados em livros sobre o assunto, o que é uma pena pois os acho bem distantes da realidade.

Parece que o princípio da Segregação de interface tem algo a ver[...]

No caso isso tem mais cara de Princípio da Responsabilidade Única, por isso "cada classe estaria responsável por um gerente". Mas de novo, é um exemplo estranho pois é muito mais provável que o conhecimento de domínio dessas pessoas seja modelada por várias classes, e é mais difícil ainda que todas respondam a uma mesma e única interface.

Mas ok... pensando um pouco aqui cheguei a um exemplo (usando Python só para ilustrar):

from typing import Protocol

class DescontoBlackFriday(Protocol):
  def pega_desconto() -> float
    ...

Aí podemos imaginar que cada gerente seja responsável por um setor de produtos, aí teríamos as classes concretas DescontoBlackFridayEletronicos, DescontoBlackFridayCamaMesaBanho, etc. Tecnicamente estaríamos satisfazendo o exemplo proposto, mas com certeza esse design seria reprovado em qualquer empresa hehe. Num caso real teremos bem mais coisas para lidar, como por exemplo teremos o mesmo desconto para todos os produtos? Então qual classe chamar quando queremos saber o desconto de um produto? Vai poder aculumar desconto com outras promoções? Dentre outros...

No fim, não sei se estou ajudando muito, mas o ponto é:

Não se apegue muito aos patterns em exemplos fictícios ou de terceiros – sempre dá margem para altas interpretações. Procure mais entender os patterns já aplicados na base de código que está trabalhando (caso esteja) ou identificar os que não foram aplicados, mas que poderiam ajudar a resolver um problema que está tendo.