SóProvas


ID
445819
Banca
COPEVE-UFAL
Órgão
UNEAL
Ano
2009
Provas
Disciplina
Arquitetura de Software
Assuntos

Definir uma interface para criar um objeto, mas deixar as subclasses decidirem que classe instanciar. Permite adiar a instanciação para subclasses.

Qual opção abaixo corresponde à descrição anterior?

Alternativas
Comentários
  • A confusão aí pode ser entre o padrão Factory Method, Builder e Abstract Factory.

    Factory Method:
    Você define uma interface como por exemplo
    ArquivoCompactado
    Esse arquivo compactado tem as operações de
    extrair( ) 
    listar( )

    Mas pode ser que se trata de um arquivo zip, ou rar, ou tar, ou tar.gz...

    Então você faz algo como

    ArquivoCompactado meuArquivo = Factory.createArquivo( "umarquivo.rar" );


    Builder:
    O padrão builder é responsável pela criação de um objeto complexo, de acordo com a necessidade da aplicação.
    Por exemplo, uma aplicação tem que gerar dois formularios diferentes, de acordo com o perfil do usuário cadastrado. 
    Se o usuário for particular, deve mostrar cpf, estado civil, filhos, salário, etc... Se for empresa deve mostrar cnpj, razão social, nome fantasia, etc...
    O padrão builder vai abstrair a construção do objeto Formulario, por exemplo.

    Abstract Factory:
    Constrói uma familia de objetos sem especificar suas classes concretas.
    Por exemplo, interfaces gráficas.
    Você pode programar Janelas, Botões, Widgets, como classes abstratas e escolher que o Abstract Factory devire isso para classes concretas de um tema Dark, ou tema Mac, ou o tema Rebeldes... Etc.
  • Gabarito: B

    Factory Method

    ======= RESUMO =====

    COMPORTAMENTAIS

    TSIO Chain State Visita e Interpreta Comando Med Mem

     

    * Strategy: define uma família de algoritmos, encapsula cada um, e faz deles intercambiáveis.

    * Chain of Responsibility: encadeia os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate.

    * Iterator: acessar sequencialmente os elementos de um objeto.

    * State: permite que um objeto mude o seu comportamento quando o seu estado interno mudar.

    * Command: encapsula uma requisição como um objeto, deixando-o parametrizar clientes com diferentes requisições.

    * Observer: quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.

    * Visitor: representa uma operação a ser executada sobre os elementos da estrutura de um objeto.

    * Memento: captura e externaliza o estado interno de um objeto, de forma que ele possa ser recuperado depois.

    * Mediator: encapsula a forma como um conjunto de objetos interage.

    * Template Method: esqueleto de um algoritmo em uma operação, deferindo alguns passos para as subclasses.

    * Interpreter: dada uma linguagem, define uma representação para sua gramática juntamente com um interpretador para as sentenças dessa linguagem.

    == CRIACIONAIS ==

    Prototype FAB Singleton

    * Abstract Factory: interface para criar famílias de objetos relacionados.

    * Builder: criação de objeto complexo com representações diferentes, construindo partes de objetos passo a passo.

    * Factory Method: define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe instanciar.

    * Prototype: cria objetos usando uma instância prototípica (clone).

    * Singleton: garante que uma classe possua apenas uma única instância e provê um ponto de acesso global a ela.

    == ESTRUTURAIS ==

    AFF Puta e Bridge Decora Composto

     

    * Adapter: converte a interface de uma classe em outra .

     

    * Bridge: desacopla uma interface de sua implementação.

     

    * Composite: compõe zero ou mais objetos similares de forma que eles possam ser manipulados como um só (montagem de árvore).

     

    * Decorator: anexa responsabilidades adicionais a um objeto dinamicamente.

     

    * Proxy: substituto ou ponto de acesso através do qual um objeto possa controlar o acesso a outro.

     

    * Façade: interface unificada para um conjunto de interfaces de um subsistema.

     

    * Flyweigth: usa compartilhamento para suportar grandes quantidades de objetos, tornando o objeto mais leve que o original.