Questões de Concurso
Comentadas sobre padrões de projeto (design patterns) em arquitetura de software
Foram encontradas 574 questões
Design Patterns A design pattern is often posed as a question: how do we solve some design problem? However a design problem is, by its nature, nonspecific, and rarely has a single straight-forward answer. There might be several ways to solve the same problem, some better than others depending on the specific situation and the specific context of the problem. A design pattern is intended to share not just solutions but a better understanding of both the problem and how it might be solved.
Firstly, patterns have a well-defined structure. This consistent layout makes it easy to browse through a collection of patterns to find relevant help and then dive further into the material. The structure encourages the author of the pattern to think carefully about the knowledge they're sharing, whilst making the material more consistently accessible to a reader.
Secondly, unlike a tutorial or recipe which typically guides you through a single approach to solving a problem, patterns encourage discussion of related and complementary approaches. Design decisions are rarely clear cut, so it can be useful to understand the context in which a decision is made and the resulting trade-offs. Communicating these nuances is how we share knowledge rather than just fixes for a problem.
Consider the following sentence from the text: “Design decisions are rarely clear cut, so it can be useful to understand the context in which a decision is made and the resulting trade-offs”. Taking into consideration the underlined excerpt from the sentence, it is correct to say that design decisions are:
O catálogo denominado Padrões GoF (‘Gang of Four’) define soluções reutilizáveis para problemas frequentes em projetos de sistemas de software.
Essas soluções estão organizadas em três famílias conforme o propósito de cada solução.
Os padrões de projetos denominados Interpreter, Prototype e
Flyweight que fazem parte desse catálogo, pertencem,
respectivamente, às seguintes famílias:
I implementar um padrão de criação que possibilite a separação entre a construção de um objeto complexo e sua representação de modo que esse processo de construção possa criar diferentes representações;
II implementar um padrão que evite vínculo permanente entre uma abstração e sua implementação;
III implementar um padrão que, sem violar o encapsulamento e a captura, externalize o estado interno de um objeto e permita que posteriormente ele seja restaurado a esse estado;
IV implementar um padrão que permita a variação do algoritmo independentemente dos clientes que o utilizam;
V implementar um padrão que forneça uma interface unificada para um conjunto de interfaces em um subsistema;
VI implementar um padrão que especifique os tipos de objetos a serem criados usando uma instância prototípica e crie novos objetos copiando este novo protótipo.
O padrão de criação prototype atende corretamente o que se pede em VI.
I implementar um padrão de criação que possibilite a separação entre a construção de um objeto complexo e sua representação de modo que esse processo de construção possa criar diferentes representações;
II implementar um padrão que evite vínculo permanente entre uma abstração e sua implementação;
III implementar um padrão que, sem violar o encapsulamento e a captura, externalize o estado interno de um objeto e permita que posteriormente ele seja restaurado a esse estado;
IV implementar um padrão que permita a variação do algoritmo independentemente dos clientes que o utilizam;
V implementar um padrão que forneça uma interface unificada para um conjunto de interfaces em um subsistema;
VI implementar um padrão que especifique os tipos de objetos a serem criados usando uma instância prototípica e crie novos objetos copiando este novo protótipo.
O padrão façade atende corretamente o que se pede em V. Esse padrão estrutural define uma interface de nível mais alto que torna o subsistema mais fácil de ser usado.
I implementar um padrão de criação que possibilite a separação entre a construção de um objeto complexo e sua representação de modo que esse processo de construção possa criar diferentes representações;
II implementar um padrão que evite vínculo permanente entre uma abstração e sua implementação;
III implementar um padrão que, sem violar o encapsulamento e a captura, externalize o estado interno de um objeto e permita que posteriormente ele seja restaurado a esse estado;
IV implementar um padrão que permita a variação do algoritmo independentemente dos clientes que o utilizam;
V implementar um padrão que forneça uma interface unificada para um conjunto de interfaces em um subsistema;
VI implementar um padrão que especifique os tipos de objetos a serem criados usando uma instância prototípica e crie novos objetos copiando este novo protótipo.
Atendendo corretamente o que se pede em IV, o padrão comportamental strategy define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis.
Um dos princípios-chave do Domain-Driven Design é o uso de uma linguagem ubíqua com termos bem definidos, que integram o domínio do negócio e que são utilizados entre desenvolvedores especialistas de negócio.
Adapter é um padrão do tipo estrutural que lida com a interface para um objeto, ao passo que builder refere-se a como um objeto composto será criado e instanciado por uma classe.
Considere a seguinte situação: Uma grande empresa possui uma rede de representação de seus produtos constituída por escritórios de venda em diversas cidades. Cada escritório possui um conjunto de vendedores que vão até os varejistas oferecer os produtos. Varejistas podem estar em áreas populosas, como supermercados, ou em áreas remotas, como comércios de bairros rurais. Ao chegar no varejista, o vendedor utiliza um sistema fornecido pela empresa para registrar os pedidos de produtos.
Na situação descrita, o objetivo é registrar os pedidos na base de dados da central de distribuição da empresa. Porém, por problemas de comunicação com a central, o computador portátil do varejista pode não conseguir conectar com a base central para registrar os pedidos. Se isso ocorrer, o sistema deve tentar salvá-los na base de dados do escritório. Quando a base do escritório também não estiver acessível, os pedidos deverão ser salvos na base de dados local, no próprio computador portátil do vendedor.