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

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

Padrões Comportamentais Preocupam-se com algoritmos e a atribuição de responsabilidades entre objetos. Descrevem padrões de comunicação entre os objetos.

Apresentações semelhantes


Apresentação em tema: "Padrões Comportamentais Preocupam-se com algoritmos e a atribuição de responsabilidades entre objetos. Descrevem padrões de comunicação entre os objetos."— Transcrição da apresentação:

1 Padrões Comportamentais Preocupam-se com algoritmos e a atribuição de responsabilidades entre objetos. Descrevem padrões de comunicação entre os objetos.

2 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrões Comportamentais zDe Classe yBaseados no uso de herança yTemplate Method yInterpreter zDe Objeto yBaseados no uso de composição yChain of Responsability, Command, Mediator, Observer, Strategy, State, Visitor, Iterator, Memento

3 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Chain of Responsability zIntenção yEvita o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar uma solicitação. Encadeia os objetos receptores, passando a solicitação ao longo da cadeia até que um objeto a trate. zMotivação yHelp sensível ao contexto: O usuário pode obter ajuda em qualquer parte da interface simplesmente pressionando o botão do mouse sobre ela. A ajuda depende da parte selecionada e do seu contexto.

4 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Chain of Responsability Estrutura do Padrão Handler HandleRequest() ConcreteHandler1 HandleRequest() ConcreteHandler2 HandleRequest() client sucessor

5 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Chain of Responsability Participantes zHandler yDefine uma interface para tratar solicitações. yImplementa o elo ao sucessor. zConcreteHandler yTrata de solicitações pelas quais é responsável. yPode acessar o seu sucessor. ySe o ConcreteHandler pode tratar a solicitação, ele o faz; caso contrário, ele a repassa para o seu sucessor. zClient yInicia a solicitação para um objeto ConcreteHandler da cadeia.

6 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Chain of Responsability Aplicabilidade zUse o Padrão Chain of Responsability quando: yMais de um objeto pode tratar uma solicitação e o objeto que a tratará não é conhecido a priori. O objeto que trata a solicitação deve ser escolhido automaticamente; yVocê quer emitir uma solicitação para um dentre vários objetos, sem especificar explicitamente o receptor; yO conjunto de objetos que pode tratar uma solicitação deve ser especificado dinamicamente.

7 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Chain of Responsability Colaborações zQuando um cliente emite uma solicitação, a mesma se propaga ao longo da cadeia até que um objeto ConcreteHandler assume a responsabilidade de tratá-la.

8 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Chain of Responsability Conseqüências zAcoplamento reduzido entre cliente e receptor zFlexibilidade na atribuição de responsabilidades a objetos. A cadeia pode ser modificada em tempo de execução zA solicitação não é garantida de ser tratada

9 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Iterator zIntenção yFornecer um meio de acessar, sequencialmente, os elementos de um objeto agregado sem expor a sua representação interna. zMotivação List Count() Append(Element) Remove(Element)... ListIterator First() Next() IsDone() CurrentItem() list

10 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Iterator Estrutura Aggregate CreateIterator() Iterator First() Next() IsDone() CurrentItem() client ConcreteAggregate CreateIterator() Return new ConcreteIerator(this) ConcreteIterator

11 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Iterator Participantes zIterator yDefine uma interface para acessar e percorrer elementos. zConcreteIterator yImplementa a interface de Iterator. yMantém o controle da posição corrente no percurso do agregado. zAggregate yDefine uma interface para a criação de um objeto Iterator. zConcreteAggregate yImplementa a interface de criação do Iterator para retornar uma instância do ConcreteIterator apropriado.

12 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Iterator Colaborações zUm ConcreteIterator mantém o controle do objeto corrente no agregado e pode computar o objeto sucessor no percurso.

13 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Iterator Aplicabilidade zPara acessar os conteúdos de um objeto agregado sem expor a sua representação interna; zPara fornecer uma interface uniforme que percorra diferentes estruturas agregadas (iteração polimórfica).

14 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Observer zIntenção yDefinir uma dependência um-para-muitos entre objetos, de maneira que quando um objeto muda o seu estado todos os seus dependentes são notificados e atualizados automaticamente. zMotivação ySeparação das classes de apresentação das classes de aplicação (ex: visualizadores para C e Java de árvores sintáticas)

15 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Observer Estrutura ConcreteSubject GetState() SetState() subjectState Subject Attach(Observer) Dettach(Observer) Notify() return subjectState; Observer Update() For all o in observers { o.Update } ConcreteObserver Update() observerState observers subject observerState = subject.GetState;

16 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Observer Participantes zSubject yConhece os seus observadores. Um número qualquer de objetos Observer pode observar um subject. yFornece uma interface para acrescentar e remover objetos observers. zObserver yDefine uma interface de atualização para objetos que devem ser notificados sobre mudanças em um Subject. zConcreteSubject yArmazena estados de interesse para objetos ConcreteObserver. yEnvia uma notificação para os seus observadores quando seu estado muda.

17 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Observer Participantes zConcreteObserver yMantém uma referência para um objeto ConcreteSubject. yArmazena estados que devem permanecer consistentes com os do Subject. yImplementa a interface de atualização de Observer, para manter seu estado consistente com o do subject.

18 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Observer Colaborações zO ConcreteSubject notifica seus observadores sempre que ocorrer uma mudança que pode tornar inconsistente o estado deles com o seu próprio. zApós ter sido informado de uma mudança no subject concreto, um objeto ConcreteObserver pode consultar o subject para obter informações. O ConcreteObserver usa esta informação para reconciliar o seu estado com aquele do subject.

19 Padrões Criacionais de Design OO. Java Deployment Course. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br Padrão Observer Aplicabilidade zQuando uma abstração tem dois aspectos, um dependente do outro. Encapsulando esses aspectos em objetos separados, permite-se variá-los e reutilizá-los independentemente. zQuando uma mudança em um objeto exige mudanças em outros, e você não sabe quantos objetos necessitam ser mudados.


Carregar ppt "Padrões Comportamentais Preocupam-se com algoritmos e a atribuição de responsabilidades entre objetos. Descrevem padrões de comunicação entre os objetos."

Apresentações semelhantes


Anúncios Google