Revisão de Padrões de Projeto: Singleton, Factory, Façade

Classificado em Computação

Escrito em em português com um tamanho de 5,82 KB

Fundamentos e Aplicações de Padrões de Projeto

1. Vantagens e Cuidados no Uso de Padrões de Projeto

Quais as vantagens do uso de padrões de projeto? Quais os cuidados necessários com seu uso?

Padrões de Projeto descrevem abstrações de software, oferecendo:

  • Vocabulário comum: Facilita a comunicação entre desenvolvedores.
  • Comunicação efetiva: Permite a discussão de princípios complexos de forma clara.
  • Documentação: Ajuda a documentar a arquitetura do software.
  • Design compacto: Captura as partes essenciais do design de forma concisa.

Cuidados com o uso de Padrões de Projeto:

  • Padrões não apresentam uma solução exata para todos os problemas.
  • Não resolvem todos os problemas de design.
  • Não são exclusivos de design orientado a objetos.

2. Padrão Singleton: Objetivo e Implementação Sincronizada

Explique o objetivo do Padrão Singleton. Por que a implementação synchronized deve ser utilizada na implementação Java?

O Padrão Singleton busca garantir que uma classe possuirá somente uma instância e provê um ponto de acesso global a tal instância. O instanciamento do objeto pode ser feito quando a classe for carregada ou quando o método de criação for chamado pela primeira vez.

A implementação em Java deve ser feita como synchronized para evitar que dois objetos da classe Singleton tentem criar o objeto de interesse ao mesmo tempo, resultando em duas instâncias diferentes.

3. Padrão Factory Method: Explicação e Contextos de Uso

Explique o Padrão Factory Method. Dê exemplos de contextos para utilizar o Factory Method.

O Factory Method provê uma interface para a criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.

Contextos para utilização:

  • Um sistema deve ser independente de como seus elementos são criados, compostos e representados.
  • Um sistema deve ser configurado para trabalhar com uma única família dentre múltiplas famílias de produtos.
  • Uma família de produtos relacionados é projetada para ser usada em conjunto, e há a necessidade de reforçar essa restrição.
  • Se deseja criar uma biblioteca de classes de produtos, revelando apenas suas interfaces e não suas implementações.

4. Padrão Observer: Contexto, Problema e Solução

Para o Padrão Observer, explique: Contexto, Problema e Solução.

  • Contexto: Situações nas quais vários componentes dependem de dados que são modificados em outro componente (o sujeito).
  • Problema: Os dados do componente sujeito modificam-se constantemente e precisam ser atualizados nos outros componentes. O número de componentes interessados pode variar.
  • Solução: Utilizar um mecanismo de registro que permite ao componente sujeito notificar os interessados sobre mudanças de estado.

5. Padrão Façade (Fachada): Explicação e Exemplo de Aplicação

Explique o Padrão Façade. Dê um exemplo de sua aplicação para um contexto onde um cliente pode realizar empréstimos de livros em uma biblioteca.

O Padrão Façade:

  • Provê uma interface unificada para um conjunto de interfaces em um subsistema (pacote de classes).
  • Define uma interface de mais alto nível que torna mais fácil o uso do subsistema.
  • Regula a comunicação com os objetos de um pacote (componente).
  • Permite gerenciar arquiteturas de software envolvendo grandes números de classes.

A estrutura Fachada está na forma de delegação, onde os clientes interagem com uma única classe do pacote, simplificando o acesso a funcionalidades complexas (como realizar um empréstimo de livro em um sistema de biblioteca que envolve classes de Usuário, Livro, Transação e Estoque).

6. Consequências do Uso do Padrão Façade

Quais as consequências do uso do Padrão Façade?

  • Isolamento: Isola os clientes dos componentes do subsistema, reduzindo o número de objetos com que o cliente interage, tornando o subsistema mais fácil de usar.
  • Estrutura: Ajuda a estruturar o sistema em camadas.
  • Acoplamento Fraco: Promove um acoplamento fraco entre o subsistema e seus clientes. Um baixo acoplamento entre subsistemas permite que se varie os componentes de um subsistema sem afetar seus clientes.

7. Padrão Adapter (Adaptador): Funcionamento e Aplicação

Qual o padrão é utilizado na solução a seguir? Explique seu funcionamento.

O padrão utilizado é o Padrão Adapter.

Funcionamento:

O Padrão Adapter permite que uma aplicação utilize funcionalidades externas. Uma classe Adapter implementa uma interface conhecida dos clientes e permite acesso a instâncias de uma classe que não é conhecida diretamente pelos clientes.

Um objeto Adapter provê a funcionalidade prometida por uma interface sem fixar a classe que de fato a implementa.

No esquema apresentado (implícito no texto), a classe adaptada (por exemplo, ContaPoupança) está acessível aos objetos da Classe Cliente (por exemplo, Gerente) que não têm acessibilidade direta à estrutura da Classe Adaptada. Esse acesso se dá pela adaptação gerada pela Classe AdaptadorPoupança (como também poderia haver uma adaptação para ContaCorrente, ContaEspecial, etc.), escondendo detalhes da classe cliente.

Entradas relacionadas: