A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Chain of Responsibility

Apresentações semelhantes


Apresentação em tema: "Chain of Responsibility"— Transcrição da apresentação:

1 Chain of Responsibility

2 Chain of Responsibility
Definição: padrão cuja função principal é evitar o acoplamento de um objeto remetente com o seu objeto receptor. Solução: Dar a mais de um objeto a chance de manipular a mensagem (requisição). Encadear os objetos receptores e passar a mensagem ao longo da cadeia, até que um dos objetos da cadeia seja capaz de responder à mensagem.

3 Estrutura do Chain of Responsibility

4 Chain of Responsibility - Participantes
Handler define uma interface para manipulação de requisições (opcional) implementa a ligação entre os receptores ConcreteHandler Manipula requisições pelas quais é responsável Pode fazer accesso ao seu sucessor Se ConcreteHandler pode manipular a requisição, ele o faz; senão, ele repassa a requisição para seu sucessor Client Inicia a requisição a um objeto ConcreteHandler da cadeia

5 Chain of Responsibility - Exemplo
Correspondências no exemplo do DoFactory: Handler   (Approver) ConcreteHandler   (Director, VicePresident, President) Client   (ChainApp)

6 Prototype

7 Prototype É utilizado para criar diversas cópias de um mesmo objeto.
Útil quando a criação de um objeto a partir do zero é muito cara computacionalmente falando. Em vez de criar novas instâncias, crie cópias de instâncias pré-existentes (protótipos) e modifique essas cópias, conforme a necessidade. O protótipo criado é um clone do objeto original.

8 Estrutura do Prototype

9 Prototype - participantes
Declara uma interace para clonar a si próprio ConcretePrototype implementa uma operação para clonar a si próprio. Essa operação retorna um objeto da mesma classe e com os mesmos valores de atributos to objeto protótipo utilizado. Client Cria um novo objeto através do envio de uma a requisição a um protótipo para clonar a si próprio.

10 Bridge

11 Bridge O padrão Bridge permite desacoplar uma abstração de sua implementação, de tal forma que as duas possa variar independentemente uma da outra. Entenda abstração como uma interface. Note que em linguagens como Java, uma classe que implemente uma interface fica acoplada a essa interface (A implements B). O padrão Bridge permite eliminar essa restrição.

12 Estrutura do Bridge

13 Bridge (Participantes)
Abstraction Define a interface da abstração. Mantém uma referência para um objetos to tipo Implementor. RefinedAbstraction estende a interface definida por Abstraction. Implementor Define a interface para classes que implementam a abstração. Esta interface não precisa corresponder à interface de Abstraction; in fact the two interfaces can be quite different. Tipicamente, a interface Implementation fornece somente operações básicas, e Abstraction define operações de alto nível baseadas nessas primitivas. ConcreteImplementor Implementa a interface Implementor e define sua implementação concreta.

14 Builder

15 Builder O padrão Builder separa a construção de um objeto complexo da sua representação de tal forma que o mesmo processo de construção possa criar diferentes representações. Esse padrão é motivado pelo desejo de variar a representação interna do produto que ele constrói e, ao mesmo tempo, esconder detalhes acerca de como o produto é montado. O cliente instrui o objeto builder sobre como criar o objeto a então solicita o resultado da criação. GOF: “is intended to decouple the process of building a complex object from the parts that make up the object”

16 Builder - estrutura

17 Builder - participantes
O padrão Builder tem dois participantes principais, Director e Builder. O objeto Director, responsável pela organização geral do objeto Product, faz chamadas ao Builder. O Builder constrói o objeto complexo, chamado de Product, sob o controle do objeto Director.

18 Builder - aplicabilidade
O padrão Builder pode ser aplicado em situações em que alguma coisa (o produto) é formada (criada, construída) a partir de partes menores. O padrão criacional Builder permite que se varie a estrutura interna de um produto, assim como a maneira como esse produto é montado. The Builder creational pattern lets you vary a product's internal structure, as well as how it gets assembled. Because you construct the object through an abstract interface, you can define a new kind of builder for a product to assemble it from different structures. The client need not know anything about the construction process, nor the parts that make up a product. You get a high degree of control in the construction process.

19 Builder (exemplo livro GoF)
Leitor para documentos RTF que exporta para vários formatos. Programa que converte RTF em outros formatos. Consiste de um Leitor/Parser e de um Conversor Dá suporte a diferentes conversões e formatos. Objetivos: Deve ser possível adicionar um novo formato facilmente. Separar o conversor do Leitor/Parser Deve ser possível reutilizar o algoritmo do Leitor/Parser O verdadeiro problema é que a quantidade de conversões em pontencial é ilimitado. É desejável a possibilidade de adicionar uma nova conversão sem modificar o leitor.

20 Builder (exemplo livro GoF)
Cada classe conversora é chamada um BUILDER e a classe leitora é o DIRECTOR. O padrão Builder separa o algoritmo para tratar um determinado formato de como um arquivo convertido é criado e representado.


Carregar ppt "Chain of Responsibility"

Apresentações semelhantes


Anúncios Google