O padrão de projeto Observer é responsável por observar e notificar a mudança de estado entre objetos distintos através de uma dependência um-para-muitos. Este padrão possui duas formas de implementação: uma delas é fazendo uso das classes nativas do JDK, enquanto a outra parte do princípio que o programador desenvolva suas próprias classes. Por fim, o artigo apresenta um pequeno projeto onde há a união do padrão Observer com o MVC.
De que se trata o artigo: O padrão de projeto Observer é responsável por observar e notificar a mudança de estado entre objetos
distintos através de uma dependência um-para-muitos. Este padrão possui duas formas de implementação: uma delas é fazendo uso das classes nativas do JDK, enquanto a outra
parte do princípio que o programador desenvolva suas próprias classes. Por fim, o artigo apresenta um pequeno projeto onde há a união do padrão Observer com o MVC.
Em que situação o tema é útil: O tema é útil a todo programador que desconhece o uso do padrão Observer e deseja saber como aplicá-lo.
Também é indicado para quem tem interesse em utilizar o padrão Observer em conjunto com o padrão MVC.
Resumo DevMan: O uso de padrões de projeto é considerado uma boa prática no desenvolvimento de sistemas de software. Empregar padrões
é sinônimo de organização e reutilização. Neste contexto, o Observer tem como objetivo manter o estado de objetos sempre atualizados através do conceito de observadores e
observados. Além disso, este padrão pode muito bem ser usado em conjunto com outros, bem como com o padrão MVC.
Em meados da década de 70 o Engenheiro Civil ChristopherAlexander documentou os padrões mais utilizados no ramo da Engenharia Civil, e este feito o fez ser considerado o
inventor dos padrões de projeto (Design Patterns). Tempos depois a área da informática adotou tal técnica e termo, e assim, deu início aos seus próprios padrões de projeto.
Alguns desses padrões já são bastante conhecidos, como: o DAO, utilizado para separar as regras de persistência de dados das classes de negócios; o MVC, que possui a finalidade
de dividir as tarefas dentro da aplicação, criando um baixo acoplamento e uma alta coesão das classes; entre vários outros.
Entre esses padrões, existe um denominado Observer. Este padrão define a dependência um-para-muitos entre objetos. Dessa forma, quando um objeto mudar seu estado, todos os seus
dependentes serão avisados e atualizados automaticamente. O processo funciona mais ou menos da seguinte maneira: uma classe é marcada como observada e outras classes são
marcadas como observadoras. Quando o objeto observado sofre uma alteração, ele envia uma mensagem do tipo “fui modificado” para seus observadores e estes são atualizados para o
estado atual com tais alterações. A implementação do Padrão Observer pode ser realizada de duas formas distintas, uma sendo toda ela desenvolvida pelo programador, e a outra
utilizando a própria implementação disponível nas classes do JDK, especificamente no pacote java.util.
Outro ponto que será abordado no artigo é a união entre padrões de projeto. Para isso, vamos demonstrar como desenvolver um projeto que utilize ao mesmo tempo os padrões
Observer e MVC.
O uso de um padrão de projeto tem como princípio organizar e facilitar o desenvolvimento de sistemas. O Observer é um padrão que serve para manter o estado dos objetos
sempre atualizados e pode, inclusive, ser adotado em conjunto com o padrão MVC.
Definindo o Padrão Observer
Como saber quando usar o padrão Observer? Essa é uma dúvida recorrente não somente para o padrão Observer, mas para qualquer outro padrão de projeto. Para saber quando usar um
padrão específico é necessário conhecer o problema que deve ser resolvido e então buscar um padrão que possa solucioná-lo. O Observer pode ser usado quando existe no projeto a
necessidade de fazer com que um conjunto de objetos seja notificado e atualizado automaticamente após um determinado evento no sistema. Este conjunto de objetos, que pode
pertencer a classes distintas, observa e é notificado quando o estado de um outro objeto, que seja comum a eles, é alterado.
Este padrão de projeto utiliza basicamente duas classes: a que será observada (Subject ou Observable) e a observadora (Observer). As classes observadoras devem implementar uma
interface específica, já a classe que será observada implementa uma interface ou estende uma superclasse.
A vantagem encontrada neste padrão é que tanto os observadores quanto os sujeitos (observados) podem ser reutilizados, já que existe um baixo acoplamento entre eles, devido ao
uso de interfaces e classes abstratas, o que é um bom princípio de design. Com isso, é possível aumentar o número de observadores sem precisar modificar a classe observada. O
observador pode ser implementado de forma que, quando receber uma notificação de mudança de estado do objeto observado, ele tenha autonomia em considerá-la ou ignorá-la.
A desvantagem é que usar este padrão de forma indiscriminada pode causar sério impacto na performance do sistema. Quando todos notificam todos a cada mudança, o sistema acaba
ficando inundado de requisições, o que poderá levar a um desempenho mais lento.
Métodos que definem o padrão
O Observer é formado por métodos que possuem padrões de nomenclatura e comportamentos específicos. É importante seguir estes padrões para que implementações diferentes do
Observer possam ser facilmente identificadas por desenvolvedores que não as codificaram. Os métodos listados a seguir estão presentes na implementação nativa do JDK:
addObserver(Observer o) – adiciona o observador, recebido como parâmetro, a uma lista de observadores que devem implementar a Interface
Observer;
removeObserver(Observer o) – remove o objeto observador, recebido como parâmetro, da lista de observadores;
hasChanget() – retorna true quando o método setChange() é invocado, e false quando o método clearChange() for invocado;
setChange() – este método é invocado quando o objeto for modificado, alertando o método hasChanged() a retornar
true;
clearChange() – sua função é alertar que as alterações já foram realizadas e então o método hasChanged() passa a
retornar false. Geralmente esse método é invocado por notifyObservers() após este realizar sua função;
notifyObservers() e notifyObservers(Object o) – notifica os observadores que houve alteração nos objetos
observados. O método ...
Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO
Desbloqueie toda a DevMedia
+2000 artigos e vídeos
+40 trilhas sobre Front-end, Back-end, IA e muito mais
Recomendamos começar pelo Plano de Estudo Carreira Programador Front-End. Essa área da programação é mais visual e intuitiva, tornando-a ideal para iniciantes. No Front-End, você aprenderá a criar a parte visual dos sites, como layout, cores e interatividade. Depois de dominar o Front-End, você pode avançar para Programador Back-End, onde aprenderá a lidar com a lógica e o funcionamento interno dos sites, e, finalmente, para Programador Mobile, focando no desenvolvimento de aplicativos para smartphones. Nossa metodologia é estruturada de forma progressiva para garantir que você desenvolva confiança e experiência ao criar projetos reais, como sites estáticos e dinâmicos.
Em quanto tempo vou me tornar um programador?
O tempo necessário para se tornar um programador varia de acordo com a dedicação de cada estudante. Com nossa metodologia, que inclui um Plano de Estudo detalhado e suporte contínuo, você pode se tornar um programador de 6 meses a um ano, dependendo do seu ritmo e esforço. Nossa abordagem prática e orientada a projetos ajudará a acelerar seu aprendizado.
Eu preciso de um diploma de faculdade para começar a atuar como programador?
Não. Ser programador é uma excelente oportunidade para quem não possui diploma de faculdade. Muitas empresas contratam baseadas nas habilidades técnicas e experiência prática, não necessariamente em diplomas. Após conquistar uma vaga, você pode optar por complementar sua formação com um diploma.
Por que a programação se tornou a profissão mais promissora da atualidade?
A necessidade de programadores cresceu exponencialmente, especialmente após a pandemia de Covid-19, que forçou muitas empresas a se adaptarem ao digital. Com o crescimento das empresas de tecnologia, a demanda por programadores aumentou. Atualmente, há mais de 200 mil vagas abertas no Brasil devido à falta de profissionais qualificados.
Metodologia
Quais são os principais diferenciais da DevMedia?
Didática e Metodologia
Com mais de 20 anos de experiência, nossa metodologia foca em menos aulas e mais prática. Desenvolvemos dezenas de projetos e exercícios para ajudar você a se tornar um programador completo. Nossos projetos são desafiadores e autênticos, não apenas exercícios repetitivos.
Projetos reais e exercícios
Você desenvolverá diversos projetos práticos em cada carreira (Front-End, Back-End e Mobile), recebendo mentoria e suporte contínuo. A prática é essencial, e oferecemos milhares de exercícios para ajudar você a fixar o conteúdo e melhorar sua posição no ranking.
Suporte ao aluno
Nossa plataforma oferece suporte dedicado com professores experientes, respondendo suas dúvidas em menos de uma hora. Isso garante que você receba a ajuda necessária durante toda a sua jornada de aprendizado.
Gamificação
A DevMedia utiliza gamificação para tornar o aprendizado mais envolvente e motivador. Você acumula pontos e moedas por acertos, que podem ser trocados por produtos e customizações no seu card pessoal. Além disso, o sistema de ranking mensal incentiva a competição amigável e a melhoria contínua.
O que eu irei aprender estudando pela DevMedia?
Ao estudar conosco, você se tornará um programador Full Stack, dominando Front-End, Back-End e Mobile. Utilizamos a linguagem JavaScript, a mais utilizada no mercado, preparando você para criar sistemas webs e aplicativos celulares. Nossa abordagem prática inclui exercícios para fixar o conhecimento e desenvolvimento de projetos reais que te preparam, para o mercado de trabalho.
Quais as vantagens de aprender programação através da linguagem JavaScript?
Ela é Multiplataforma, ela vai te permitir programar para web e para celulares utilizando praticamente a mesma sintaxe.
Elá é Full Stack. Ela te permite criar aplicações Front-end, Back-end e Mobile. Isso acelera muito sua carreira e aumenta suas possibilidades de pegar trabalhos autônomos e conquistar uma vaga no mercado.
Ela é fácil de aprender. Como ela não exige conhecimento inicial em “Orientação a Objetos” ela se torna mais simples com uma curva de aprendizado suave e vai te permitir começar a programar mais rápido do que outras linguagens
A plataforma oferece certificados?
Sim, oferecemos dois tipos de certificados: o certificado de conclusão, que você adquire ao consumir o conteúdo, e o certificado de autoridade, que você obtém ao acertar exercícios. Ambos possuem carga horária, que pode ser utilizada para fins acadêmicos, como atividades complementares na faculdade, e também para comprovações em processos seletivos ou no seu currículo.
A plataforma tem suporte ao aluno, como funciona?
Sim, temos uma equipe de programadores pronta para ajudar com todas as suas dúvidas! Durante o horário comercial, o tempo médio de resposta é de até 10 minutos. E não se preocupe, também oferecemos suporte à noite e nos finais de semana, com um prazo de resposta um pouco maior.
A DevMedia me forma como programador Full Stack?
Sim! Oferecemos uma formação completa, do zero até Full Stack. Nosso foco é na prática, então você vai encontrar muitos exercícios e projetos reais ao longo do curso. Garantimos que você sairá com a autonomia necessária para desenvolver seus próprios projetos com confiança!
Tem horário para as aulas?
Não, não temos horários fixos para as aulas. Todo o nosso conteúdo está disponível para você acessar a qualquer momento, permitindo que você estude conforme sua própria disponibilidade e ritmo. Dessa forma, você pode integrar o aprendizado à sua rotina de maneira mais flexível e eficaz.
Por que a DevMedia não usa videoaulas em sua didática?
Nosso foco principal é formar programadores de verdade. Sabemos que o dia a dia de um programador envolve muita leitura, interpretação e escrita de código. Por isso, nosso conteúdo é desenvolvido para ambientar você nesse processo desde o início, proporcionando mais autonomia e acelerando seu aprendizado.
Na vídeo-aula é o professor que está lendo, interpretando e escrevndo o código para você, isso limita o seu progresso. Ao ler e interagir diretamente com o conteúdo, você exercita sua capacidade de leitura e concentração, além de poder avançar no seu próprio ritmo. Dessa forma, você se torna um programador mais independente e preparado para os desafios reais do mercado.
Preciso de um computador específico para estudar na DevMedia?
Não é necessário nada específico. Qualquer computador com processador atual e memória de 8 GB é suficiente.
Eu consigo estudar pelo celular?
Sim, a DevMedia possui um aplicativo que te permite seguir com seus estudos de qualquer lugar.
A DevMedia tem aplicativo?
Sim, nosso aplicativo está disponível na Play Store e na Apple Store, permitindo que você estude de forma prática e conveniente em qualquer lugar.
Preciso estar na faculdade para acompanhar os estudos na DevMedia?
Não, a faculdade não é necessária. Você não precisa de nenhum conhecimento prévio para iniciar os estudos na nossa plataforma.
Assinatura e Pagamentos
Quais são os planos de assinatura disponíveis?
Oferecemos o plano anual, o valor total é lançado no cartão de crédito, parcelado em 12 vezes, e você precisa dispor do valor total no limite do seu cartão. Você também pode optar por pagar no PIX
Adquirindo o plano, terei acesso a todo o conteúdo?
Sim, ao assinar nossa plataforma, você desbloqueia acesso total a todo o nosso conteúdo, sem precisar comprar nada separadamente.
A plataforma tem planos vitalícios?
Não, nossos planos são anuais, garantindo que você tenha acesso contínuo às atualizações mais recentes e aos novos conteúdos. A tecnologia evolui rapidamente, e um plano vitalício oferece um conteúdo estático que se tornará ultrapassado em pouco tempo. Com nossos planos anuais, você está sempre à frente, aprendendo as novidades e tendências mais atuais no mundo da programação.
A DevMedia tem fidelidade?
Sim, nosso plano tem uma fidelidade de 12 meses, o que garante o tempo ideal para você explorar nosso conteúdo e desenvolver a autonomia necessária para trabalhar com programação.
Como funciona o cancelamento?
Nós garantimos seu direito de cancelamento com reembolso total dentro dos primeiros 7 dias.
Para que você aproveite ao máximo seu investimento, oferecemos suporte personalizado para orientá-lo na utilização da plataforma. Também temos a opção de transferência de titularidade do plano, permitindo que outra pessoa aproveite o restante do seu período de assinatura.
Cadastro
Como excluir meus dados da plataforma?
Para excluir seus dados da plataforma, acesse o link : https://www.devmedia.com.br/fale-conosco/ e abra um protocolo de 'Exclusão de dados'. Nossa equipe processará a solicitação e removerá todas as informações do seu cadastro.