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

Muito bacana.

Tem alguns insigths aproveitando seu trabalho.

No java com springboot tu pode usar um evento, deixando essa chamada mais desacoplada do teu código pois quem emite o evento não precisa conhecer quem vai ouvir. Confesso que não sei se o nome continuaria chamando Observer mas seria algo como:

  1. Um cara que vai ser o representante de eventos de um canal
import org.springframework.context.ApplicationEvent;

public class ChannelEvent extends ApplicationEvent {

    public ChanelEvent(EventType event) {
        super(event);
    }

}

Tua classe canal

import org.springframework.context.ApplicationEventPublisher;
    
public class Canal {
    private final ApplicationEventPublisher eventPublisher;
    private String nomeDoCanal;
    private List<Observer> listaDeInscritos;

.....

    public void notificarInscritos() {
    //aqui tu dispara o evento
        eventPublisher.publishEvent(new ChannelEvent(EventType.NEW_MOVIE));
    }

.....

}

Por fim uma service que vai ficar escutando os eventos. Tu pode ter 1 ou n services de propósitos diferentes:

    @EventListener
    public void onPath(final ChanelEvent event) {
         if(EventType.NEW_MOVIE.equals(event)) {
            // faz alguma coisa como buscar no banco todos os insvcritos e enviar uma notificação. Neste caso mandei só um enum mas poderia ter mandado um objeto com mais informações.
         }
    }

Como pode ver, a vantagem desta implementação é que você cria um evento e ele estará sempre disponível em todo seu projeto. Pense que poderia ser um evento de banco de dados. Sempre que eu salvar um objeto específico quero validar se ele atende algum critério. Mas o principal é que tu mantem desacoplado o teu código. A classe Chanel não tem obrigação de saber quem quer ser notificado quando um novo video for lançado. No teu caso, tu falou de inscritos mas poderiamos ter uma outra service que iria ouvir novos vídeos para classificar eles por relevancia , ou para aplicar um processamento de video em busca de irregularidades. Obvio, citei coisas que talvez sejam resolvidas melhor num microservice mas deu pra entender.

Carregando publicação patrocinada...
3

Fala, @JonasRR93. Não sou dev Java, mas só pela sua descrição inicial sobre como funciona esse mecanismo de Event, já entendo que ele é uma implementação do famoso padrão Pub/Sub.
A maioria das pessoas confundem o Pub/Sub com o Observer (já tive que responder isso em entrevista de trabalho), mas a principal diferença entre eles é que no Observer, o Sujeito conhece os Observadores e no Pub/Sub você possui um barramento de eventos e os Interessados escutam os eventos desse barramento.

1

Valeu Jonas, muito legal sua abordagem ainda mais se tratando do Spring que estou me aprofundando no momento! Vou tentar implementar em algum projeto futuramente.