Baixe o app para aproveitar ainda mais
Prévia do material em texto
Padrão Singleton: Questão 1: Padrão de criação que garante que uma classe tenha apenas uma instância e que forneça um ponto global de acesso a si mesma. É utilizado quando é necessário um ponto único para criação de uma instância de classe e quando precisamos de apenas uma instância de uma classe. UML: Singleton deve sempre ter um construtor privado. getInstance() é static, assim sendo possível que outras classes possam acessála. uniqueInstance possui a única instância de Singleton. As três soluções para evitar que sua classe Singleton tenha problemas são: 1° Declarando o getInstance() da classe como synchronized. 2° Eager initialization ou inicialização apressada. 3° Trava duplamente verificada. Vantagens/Desvantagens: 1° Sincronizando o getInstance() pode diminuir o desempenho do programa por um fator de 100. Se o desempenho de getInstance() não for crítico para o seu aplicativo, essa pode ser uma boa saída. 2° Útil se você sabe que seu programa sempre cria e usa uma instância Singleton. Inicializador estático é executado quando a classe inicializa após o seu carregamento, mas antes que a classe possa ser usada por qualquer divisão; Não tem necessidade de sincronizar o método getInstance() o que significa que as threads verão a mesma instância e o locking não é requerido. Você não tem o controle de qual o exato momento que o objeto foi criado. É de imediato a resolução dos problemas das threads. 3° Reduzir o uso da sincronização do getInstance(). Garante que várias threads lidem com a variável uniqueInstance corretamente. Questão 2: b) Para garantir que diferentes threads não passassem, utilizei a eager initialization, me foi útil já que eu queria que fosse criado apenas uma única instância, é uma solução imediata a resolução de problemas com threads, a desvantagem é que não se tem controle do exato momento em que o objeto foi criado. Padrão Adapter: Questão 3: Padrão do tipo estrutural que converte a interface de uma classe para outra interface que o cliente espera encontrar. Usado quando tem a necessidade de adaptar interfaces incompatíveis para que possam trabalhar juntas.O padrão Adapter possui dois modelos de implementação: Object Adapter que utiliza composição e o Class Adapter que utiliza herança de classes + interfaces. UML Object Adapter: UML Class Adapter: Questão 3 D Entre o Object Adapter e Class Adapter, a mais poderosa é o Object Adapter, já que usa composição, ela pode se comunicar com mais de um objeto. Questão 5 C Respeitam o principio aberto/fechado por que não houve alteração no código original, apenas extensões foram feitas para se adaptar ao código, assim atendendo aos princípios aberto para extensões e fechado para modificações.
Compartilhar