Design Pattern Observer

Run Settings
LanguageJava
Language Version
Run Command
import java.util.List; import java.util.ArrayList; class Main { public static void main(String[] args) { Subject canal = new Canal("Canal 01"); Observer n1 = new Notificacao("N1"); Observer n2 = new Notificacao("N2"); canal.addNotificacao(n1); canal.addNotificacao(n2); n1.inscreverNoCanal(canal); n2.inscreverNoCanal(canal); canal.novoPost(); } } interface Observer { void enviar(); void inscreverNoCanal(Subject canal); } class Notificacao implements Observer { private String nome; private Subject canal = new Canal("Padrão"); public Notificacao(String nome) { this.nome = nome; } public void inscreverNoCanal(Subject canal) { this.canal = canal; } public void enviar() { System.out.println("Enviando notificação '" + this.nome + "'. Pelo canal '" + canal.getNome() + "'."); } } interface Subject { String getNome(); void addNotificacao(Observer notificacao); void novoPost(); void notificar(); } class Canal implements Subject { private List<Observer> notificacoes = new ArrayList<>(); private String nome; public Canal(String nome) { this.nome = nome; } public String getNome() { return this.nome; } public void addNotificacao(Observer notificacao) { notificacoes.add(notificacao); } public void novoPost() { System.out.println("Novo post adicionado!"); notificar(); } public void notificar() { for (Observer notificacao : notificacoes) { notificacao.enviar(); } } }
Editor Settings
Theme
Key bindings
Full width
Lines