1 - Padrão Construtor
O padrão construtor é um padrão simples. Objetos construtores são um tipo especial de função, responsáveis por instanciar um novo objeto e alocar um espaço na memória para ele. No javascript não existe o conceito de classes convencionais, como vemos em linguagens orientadas a objetos. Mas existem algumas formas engenhosas de se conseguir os mesmos efeitos
1.1 - Exemplo
_______ modelo retirado do livro "Learning JavaScript Design Patterns - Addy Osmani 2012-2020."
No exemplo acima é mostrado como conseguimos atingir o efeito do padrão construtor no javascript. Ao adicionar a palavra chave 'new' anteriormente a uma função construtora nós dizemos ao javascript que gostaríamos que essa função se comportasse como um construtor.
Dentro do construtor, a palavra chave 'this' fica responsável por referenciar o novo objeto que esa sendo criado.
2 - Padrão Observador
O conceito do padrão observador diz que uma instância mantém uma lista com uma coleção de observadores (objetos) e os notifica em todas as mudanças em seus estados.
Quando uma instância (também conhecida como assunto ) precisa notificar notificar algum acontecimento, ela envia a todos os observadores na forma de broadcast.
Outra forma de pensar é a seguinte:
Observadores são como pessoas e instância são os assuntos que as pessoas podem se interessar. Como observador, seu trabalho é ficar por dentro das novidades que os assuntos trazem. Portanto, cada vez que acontecer alguma alteração no assunto que você tem interesse você será notificado e poderá tomar alguma ação com base naquilo.
Assunto: mantém uma lista de observadores, facilita a adição ou remoção de observadores
Observador: fornece uma interface de atualização para objetos que precisam ser notificados sobre as mudanças de estado de um Assunto
ConcreteSubject: transmite notificações para observadores sobre mudanças de estado, armazena o estado de ConcreteObservers
ConcreteObserver: armazena uma referência para o ConcreteSubject, implementa uma interface de atualização para o Observer para garantir que o estado seja consistente com o do Assunto
Em nosso aplicativo de amostra usando os componentes do Observer acima, agora definimos: Um botão para adicionar novas caixas de seleção observáveis ​​à página Uma caixa de seleção de controle que funcionará como um assunto, notificando outras caixas de seleção que devem ser marcadas Um contêiner para as novas caixas de seleção adicionadas Em seguida, definimos os manipuladores ConcreteSubject e ConcreteObserver para adicionar novos observadores à página e implementar a interface de atualização. Veja abaixo os comentários embutidos sobre o que esses componentes fazem no contexto do nosso exemplo. ______modelo retirado do livro "Learning JavaScript Design Patterns - Addy Osmani 2012-2020."