Uma aplicação Java deve oferecer suporte para que os serviço...

Próximas questões
Com base no mesmo assunto
Q1845296 Arquitetura de Software
Uma aplicação Java deve oferecer suporte para que os serviços disponibilizados por objetos que consomem muitos recursos possam ser requisitados, indiretamente, pelas demais classes (clientes) dessa aplicação. As soluções para esse problema de design devem impedir que esses objetos sejam diretamente referenciados pelos clientes, pois eles só devem ser instanciados quando seus serviços forem realmente solicitados. A solução que a equipe de desenvolvimento propôs irá fornecer substitutos para esses objetos reais, de modo a controlar o acesso a eles. As classes dos objetos reais e dos objetos substitutos devem implementar uma mesma interface. Dessa forma, os substitutos servirão de representantes dos objetos reais. Eles receberão requisições dos clientes e as delegarão aos objetos reais. A solução proposta pela equipe de desenvolvimento foi baseada no padrão de projeto 
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a alternativa C: Proxy.

Vamos explicar por que a alternativa C está correta e por que as demais estão incorretas.

Para resolver essa questão de concursos públicos, é necessário entender os conceitos e a aplicação de padrões de projeto (Design Patterns) relacionados à estrutura de dados e algoritmos. A questão descreve uma situação em que uma aplicação Java precisa gerenciar o uso de objetos que consomem muitos recursos, evitando que eles sejam instanciados desnecessariamente e permitindo que sejam requisitados indiretamente pelas demais classes da aplicação.

O padrão Proxy é ideal para essa situação, pois ele fornece um substituto ou representante para outro objeto, a fim de controlar o acesso a ele. O Proxy implementa a mesma interface que o objeto real, recebendo as requisições dos clientes e delegando-as ao objeto real somente quando necessário. Isso garante que os objetos que consomem muitos recursos sejam instanciados apenas quando seus serviços forem realmente solicitados.

Agora, vamos analisar as alternativas incorretas:

Alternativa A: Facade

O padrão Facade é usado para fornecer uma interface simplificada para um conjunto complexo de interfaces em um subsistema. Ele não lida com a substituição ou controle de acesso como o Proxy. O Facade visa facilitar a interação com sistemas complexos, mas não é adequado para adiar a criação de objetos pesados.

Alternativa B: Adapter

O padrão Adapter permite que duas interfaces incompatíveis trabalhem juntas, convertendo a interface de uma classe em outra interface que o cliente espera. Ele resolve problemas de incompatibilidade de interfaces, mas não controla a criação ou o acesso a objetos que consomem muitos recursos.

Alternativa D: Bridge

O padrão Bridge é destinado a separar a abstração da implementação, permitindo que ambas variem independentemente. Ele é útil para desenvolver hierarquias de classes independentes, mas não oferece uma solução para controlar a criação de objetos pesados como o Proxy.

Alternativa E: Composite

O padrão Composite permite que objetos sejam compostos em estruturas de árvore para representar hierarquias parte-todo. Ele facilita o tratamento uniforme de objetos individuais e composições de objetos, mas não aborda a questão de substituição e controle de acesso a objetos pesados.

Em resumo, a alternativa C: Proxy é a correta, pois é o padrão de projeto que controla o acesso a objetos que consomem muitos recursos, instanciando-os apenas quando necessário e servindo como representante dos objetos reais para os clientes da aplicação.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Gabarito: C

a) facade: isolamos partes do sistema (sub-sistema) com o uso de uma fachada (façade) e somente através dela (passando por ela) é que temos acesso ao sub-sistema.

b)adapter: é muito utilizado quando precisamos encaixar uma nova biblioteca de classes, adquirida de um fornecedor, em um sistema de software já existente, porém essas bibliotecas de classe do novo fornecedor são diferentes das bibliotecas de classes do fornecedor antigo. Como não temos o código do novo fornecedor e também não podemos alterá-la, o que pode ser feito é criar uma classe que faça essa adaptação, ou seja, ela é responsável por adaptar a interface do novo fornecedor ao formato que o sistema espera.

c) proxy: Proxy é um padrão de projeto estrutural que fornece um objeto que atua como um substituto para um objeto de serviço real usado por um cliente. Um proxy recebe solicitações do cliente, realiza alguma tarefa (controle de acesso, armazenamento em cache etc.) e passa a solicitação para um objeto de serviço.

O objeto proxy tem a mesma interface que um serviço, o que o torna intercambiável com um objeto real quando passado para um cliente.

d) Bridge é um padrão de projeto estrutural que permite que você divida uma classe grande ou um conjunto de classes intimamente ligadas em duas hierarquias separadas—abstração e implementação—que podem ser desenvolvidas independentemente umas das outras.

e) design de aplicaçao com estrutura de arvore

"A solução que a equipe de desenvolvimento propôs irá fornecer substitutos para esses objetos reais, de modo a controlar o acesso a eles(...)"

Proxy é um padrão de projeto que fornece um objeto substituto para outro objeto. Ele atua como intermediário controlando acesso ao objeto original.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo