SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
Curso: Tecnologia em Análise e Desenvolvimento de
Sistemas
Disciplina: Arquitetura de Software
Prof. Msc. Petrônio Candido Lima e Silva
Dupla: Aline Ferreira e Aricelio de Souza
Turma: 5º Periodo
Catálogo de Design Patterns
P of EAA – Martin Fowler
Introdução ao catálogo Pof EA.
. Lazy Load. . Service Layer.
. Separated Interface. . Referências.
. Value Object.
. Query Object.
. Repository.
. Identity Map.
. Unity of Work.
. Active Record.
Introdução ao Catálogo
P of EAA

O livro Patterns of Enterprise
Application Architecture começou a ser
desenvolvido depois de Davi Rice e
Martin Fowler terem dado palestras
sobre arquitetura J2EE e refletido sobre
como os conceitos que haviam
aprendido foram cruciais para o
desenvolvimento de seus projetos.

O livro tem o propósito de definir
padrões de projeto para ajudar
desenvolvedores, indepentente da
plataforma que utilizam.

O livro é dividido em duas partes:

1ª parte: Tutorial sobre arquitetura de
aplicações corporativas.

2ª parte: Referência para cerca de 40
tipos de padrões de projeto.

Para cada padrão é descrito como
funciona e quando usá-lo, com
exemplos em Java, C# ou ambos.
Introdução
Lazy Load
Lazy Load
Finalidade
O Lazy Load tem a finalidade de
interromper o processo de carregamento
de objetos que não serão usados.
Ele coloca um marcador na estrutura dos
objetos de modo que se os dados forem
necessários à aplicação serão
carregados apenas quando forem
usados.
Lazy Load
Como é implementado?

Inicialização Tardia (Lazy Inicialization).

Proxy Virtual (Virtual Proxy).

Armazenador de Valor (Value Holder).

Fantasma (Ghost).
Lazy Load
Inicialização Tardia (Lazy
Inicialization)

Abordagem mais simples.

Consiste em verificar se um campo é nulo
antes de acessá-lo. Sendo nulo, ele calcula
o valor do campo antes de retornar o
mesmo.

Para que fucione, o campo a ser lido deve
estar auto-encapsulado.
Lazy Load
Exemplo
Lazy Load
Proxy Virtual (Virtual Proxy)

É um objeto que parece com o objeto que
deveria estar no campo, mas não contém
nada.

Somente quando um dos seus métodos é
chamado, ele carrega o objeto correto a
partir do banco de dados.
Lazy Load
Exemplo
Lazy Load
Armazenador de Valor (Value
Holder)

É um objeto que encapsula algum outro
objeto.

Para obter o objeto subjacente, você
solicita seu valor ao armazenador de valor.

Sua desvantagem é que a classe precisa
saber que ele existe.
Lazy Load
Exemplo
Lazy Load
Lazy Load
Fantasma (Ghost)

É o objeto real em um estado parcial. Ao ser
carregado do banco de dados, ele contém apenas
seu ID.

Sempre que o acesso a um campo for solicitado, ele
carrega seu estado completo.

Um fantasma é um objeto, onde cada campo é
inicializado tardiamente.

O objeto é carregado de forma incompleta, porém
com seu identificador (chave) e carrega seus dados
no primeiro acesso a suas propriedades.
Lazy Load
Exemplo
Separated Interface

Define uma interface para desacoplar
uma camada de outra. As vezes é preciso
contradizer a regra de dependencia entre
camadas, por exemplo, uma camada
acessar outra sem passar pelas
intermediarias ou uma camada não
depender de outra.
Separated Interface

Para por exemplo, a camada de
apresentação acessar a camada de
pesistência diretamente, a apresentação
passaria a depender da interface da
camada de pesistência.

Assim, mesmo que as classe da camada
de pesistência mudem, se a interface não
mudar, a apresentação não precisará
mudar.
Separated Interface
Separated Interface
Exemplo
Separated Interface
Exemplo
Separated Interface
Exemplo
Value Object

Em diversas aplicações orientadas a
objetos, muitos objetos possuem uma
Identidade.

Uma importante classe de domínio como
a classe Cliente terá vários atributos. O
valor desse atributos é que diferenciam
diferentes objetos de sua classe.

Portanto, um objeto com uma Identidade,
PERSISTE, ou seja, ele existe durante
toda aplicação.
Value Object
Value Object
Value Object

Mas existem situações em que alguns
objetos NÃO precisam ter uma
Identidade, pois esses objetos
representam apenas características
singulares de outros objetos.

Exemplos: Classe Dinheiro, Data, etc.

Esses objetos não precisam de uma
identidade, pois representam somente
valores, ou seja, eles não precisam
persistir durante toda a aplicação.
Query Object

Segundo FOWLER (2006), Query Object é
uma especialização do padrão Interpreter
que constroi frases de consulta SQL com
base em uma estrutura de objetos.

O padrão propõe que se utilize um objeto
para conter todos os parametros
necessários a construir a consulta SQL.

Um objeto que representa uma consulta
ao banco de dados.
Query Object
Query Object
Query Object
Identity Map

Segundo FOWLER (2006), esse padrão
assegura que cada objeto seja carregado
apenas uma vez, mantendo cada objeto
carregado em um mapa. Assim, ele
procura os objetos usando o mapa quando
se referindo a eles.

Um identity map mantém um registro de
todos os objetos que foram lidos do banco
de dados em uma única transação de
negócio.
Identity Map
Identity Map

Sempre que quiser um objeto, você
verifica o Mapa de identidade antes para
ver se já o tem, semelhante a um cache.

Identity Map explicito: É acessado com
métodos distintos para cada tipo de objeto
que é preciso.

Identity Map genérico: Usa um único
método para todos os tipos de objetos.
Identity Map
Identity Map
Exemplo
Active Record

O padrão Active Record encapsula a
lógica para se criar uma linha na tabela
correspondente a respectiva classe.

Onde,cada objeto sabe como ler e gravar
seus dados no banco de dados, não existe
uma camada específica para realizar essa
tarefa.
Active Record

Este tipo de estrutura é indicada para
sistemas menores onde a lógica de
dominio não é tão complexa, como
inserções,exclusões etc..

A estrutura dos dados dos objetos do
Active Record devem ser exatamente
iguais com a estrutura dos dados no
Banco de Dados, o que dificulta a
manutenção em razão da dependência
entre os mesmos.
Active Record
Exemplo
Active Record
Exemplo
Active Record
Active Record
Repository

O padrão Repository faz a mediação
entre o domain model e as camadas de
mapeamento de dados, agindo como uma
coleção de objetos de domínio em
memória FOWLER (2006).

Esta camada abstrai o acesso a camada
de persistência, isolando a lógica de
acesso aos dados de qualquer outra
camada da aplicação.
Repository

Este padrão é indicado para o
desenvolvimento de aplicações que
possuem um grande número de classes e
nescessitam de consultas mais pesadas,
além de ajudar a minimizar as duplicações
nas lógicas das consultas.
Repository
Exemplo
Repository
Unity of Work

Mantém uma lista de objetos afetados por
uma transação de negócio e coordena a
gravação das alterações e a desolução de
problemas de concorrência FOWLER (2006).
Unity of Work
Unity of Work

Uma Unit of work pode ser entendida como
uma sessão ou objeto que mantém o registro
de todas as atividades relacionadas ao banco
de dados, realizadas durante uma transação
de negócio, sendo também responsável pelo
gerenciamento dos problemas de
concorrência que podem ocorrer oriundos
dessa transação.
Unity of Work
Unity of Work

É indicada para situações onde são
necessários:

Efetuar logs.

Tracing.

Gerenciar as transações.

Promover a testabilidade dos sistema, etc.
Unity of Work
Exemplo
Unity of Work
Unity of Work
Service Layer

Define os limites de uma aplicação com uma
camada de serviços que estabelece um
conjunto de operações disponíveis e
coordena a resposta da aplicação em cada
operação.

Uma Camada de Serviço define a fronteira de
uma aplicação e seu conjunto de operações
disponiveis, a partir da perspectiva das
camadas de interface dos clientes.
Service layer
Service Layer

Ela encapsula a lógica de negócio da
aplicação, controlando as transações e
coordenando as respostas na implementação
de suas operações.
Service layer
Service layer
Service layer
Referências
ALMEIDA, Erico Renato Oliveira, Padrões de Projeto – Value
Object. 2007. Disponivel em:
<http://imasters.com.br/artigo/7293/linguagens/padroes-de-
projeto-value-object/>. Acesso em: 16 Mar 2014.
FOWLER, Martin. Padrões de Arquitetura de Aplicações
Corporativas / Martin Fowler; tradução Acauan Fernandes. -
Porto Alegre : Bookman, 2006.
PIRES, Glauber Magalhães. Lazy Loading – Inicialização
Preguiçosa. Disponivel em:
<http://www.glauberpires.com.br/arquitetura/4-Lazy
%20Loading.pdf>. Acesso em: 16 Mar 2014.
RANIERI, Bárbara. Lazy Load – Quando usar?. 2013. Disponivel
em: <http://www.princiweb.com.br/blog/programacao/aspnet/lazy-
load-quando-usar.html>. Acesso em: 16 Mar 2014.
Referências
SANTOS, Jadson José. Análise da Utilização de padrões no
Desenvolvimento de Software em Camadas. 2008. Disponivel
em: <http://jadsonjs.files.wordpress.com/2008/03/artigo-padroes-
de-projeto-padroes-basicos.pdf>. Acesso em: 16 Mar 2014.
TABORDA, Sérgio, Query Object. 2009. Disponivel em:
<http://sergiotaborda.wordpress.com/desenvolvimento-de-
software/java/patterns/query-object/>. Acesso em: 16 Mar 2014.
Referências

Weitere ähnliche Inhalte

Was ist angesagt?

Apresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de DadosApresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de DadosLuan Lima
 
2015-StarWest presentation on REST-assured
2015-StarWest presentation on REST-assured2015-StarWest presentation on REST-assured
2015-StarWest presentation on REST-assuredEing Ong
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosLudimila Monjardim Casagrande
 
Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer PatternMudasir Qazi
 
Collections and its types in C# (with examples)
Collections and its types in C# (with examples)Collections and its types in C# (with examples)
Collections and its types in C# (with examples)Aijaz Ali Abro
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraNatanael Simões
 
Análise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaAnálise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaCursoSENAC
 
Diagrama de Atividades - UML
Diagrama de Atividades - UMLDiagrama de Atividades - UML
Diagrama de Atividades - UMLVinícius Barros
 
Publish-Subscribe Middlewares
Publish-Subscribe MiddlewaresPublish-Subscribe Middlewares
Publish-Subscribe Middlewareshome
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasBreno Vitorino
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arraysArthur Emanuel
 

Was ist angesagt? (20)

Apresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de DadosApresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de Dados
 
2015-StarWest presentation on REST-assured
2015-StarWest presentation on REST-assured2015-StarWest presentation on REST-assured
2015-StarWest presentation on REST-assured
 
Observer pattern
Observer patternObserver pattern
Observer pattern
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Design Pattern - Observer Pattern
Design Pattern - Observer PatternDesign Pattern - Observer Pattern
Design Pattern - Observer Pattern
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Collections and its types in C# (with examples)
Collections and its types in C# (with examples)Collections and its types in C# (with examples)
Collections and its types in C# (with examples)
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
 
Análise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de SequenciaAnálise Orientada a Objetos - Diagrama de Sequencia
Análise Orientada a Objetos - Diagrama de Sequencia
 
Diagrama de Atividades - UML
Diagrama de Atividades - UMLDiagrama de Atividades - UML
Diagrama de Atividades - UML
 
Publish-Subscribe Middlewares
Publish-Subscribe MiddlewaresPublish-Subscribe Middlewares
Publish-Subscribe Middlewares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Linguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e TécnicasLinguagem Java - Conceitos e Técnicas
Linguagem Java - Conceitos e Técnicas
 
Conceptos basicos POO
Conceptos basicos POOConceptos basicos POO
Conceptos basicos POO
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arrays
 

Andere mochten auch

Produtividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelProdutividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelAlessandro Kieras
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - IntroduçãoSergio Crespo
 
Aula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoAula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoVinícius de Paula
 
Aula 04 - UML e Padrões de Projeto
Aula 04 - UML e Padrões de ProjetoAula 04 - UML e Padrões de Projeto
Aula 04 - UML e Padrões de ProjetoVinícius de Paula
 
Aula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoAula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoVinícius de Paula
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Howard Gardner - Teoria das Inteligências Múltiplas
Howard Gardner - Teoria das Inteligências MúltiplasHoward Gardner - Teoria das Inteligências Múltiplas
Howard Gardner - Teoria das Inteligências MúltiplasGabriel De Oliveira Soares
 

Andere mochten auch (9)

Produtividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache CamelProdutividade em Integração de Aplicações com Apache Camel
Produtividade em Integração de Aplicações com Apache Camel
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - Introdução
 
Aula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoAula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de Projeto
 
Aula 04 - UML e Padrões de Projeto
Aula 04 - UML e Padrões de ProjetoAula 04 - UML e Padrões de Projeto
Aula 04 - UML e Padrões de Projeto
 
Aula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de ProjetoAula 03 - UML e Padrões de Projeto
Aula 03 - UML e Padrões de Projeto
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Jerome Bruner
Jerome BrunerJerome Bruner
Jerome Bruner
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Howard Gardner - Teoria das Inteligências Múltiplas
Howard Gardner - Teoria das Inteligências MúltiplasHoward Gardner - Teoria das Inteligências Múltiplas
Howard Gardner - Teoria das Inteligências Múltiplas
 

Ähnlich wie Catálogo de Design Patterns

Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Marcelo Zeferino
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemassauloroos01
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3Joel Lobo
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkMatteus Barbosa
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoftMarcius Brandão
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Ryan Padilha
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objetoelliando dias
 

Ähnlich wie Catálogo de Design Patterns (20)

Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3
 
Aula1
Aula1Aula1
Aula1
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
 
Data accesss conect
Data accesss conectData accesss conect
Data accesss conect
 
Dao
DaoDao
Dao
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
Apresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity FrameworkApresentação em Projeto de Sistemas – Entity Framework
Apresentação em Projeto de Sistemas – Entity Framework
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoft
 
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Banco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetosBanco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetos
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
 
Java7
Java7Java7
Java7
 

Mehr von Aricelio Souza

Testes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoTestes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoAricelio Souza
 
Metodologia Ágil Scrum
Metodologia Ágil ScrumMetodologia Ágil Scrum
Metodologia Ágil ScrumAricelio Souza
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMAricelio Souza
 
Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...
Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...
Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...Aricelio Souza
 
Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosAricelio Souza
 
Ataques DOS, DDOS e Scamming
Ataques DOS, DDOS e ScammingAtaques DOS, DDOS e Scamming
Ataques DOS, DDOS e ScammingAricelio Souza
 
Documentação Ataques DOS, DDOS e Scamming
Documentação Ataques DOS, DDOS e ScammingDocumentação Ataques DOS, DDOS e Scamming
Documentação Ataques DOS, DDOS e ScammingAricelio Souza
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 

Mehr von Aricelio Souza (9)

Testes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de CódigoTestes de Caixa Branca e Métricas de Código
Testes de Caixa Branca e Métricas de Código
 
Metodologia Ágil Scrum
Metodologia Ágil ScrumMetodologia Ágil Scrum
Metodologia Ágil Scrum
 
Padrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVMPadrões Arquiteturais - MVC, MVP e MVVM
Padrões Arquiteturais - MVC, MVP e MVVM
 
Tipos de Servidores
Tipos de ServidoresTipos de Servidores
Tipos de Servidores
 
Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...
Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...
Comparativo tecnico entre tecnologias de banco de dados: Relacional, NoSQL, N...
 
Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplos
 
Ataques DOS, DDOS e Scamming
Ataques DOS, DDOS e ScammingAtaques DOS, DDOS e Scamming
Ataques DOS, DDOS e Scamming
 
Documentação Ataques DOS, DDOS e Scamming
Documentação Ataques DOS, DDOS e ScammingDocumentação Ataques DOS, DDOS e Scamming
Documentação Ataques DOS, DDOS e Scamming
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 

Catálogo de Design Patterns

  • 1. Curso: Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: Arquitetura de Software Prof. Msc. Petrônio Candido Lima e Silva Dupla: Aline Ferreira e Aricelio de Souza Turma: 5º Periodo
  • 2. Catálogo de Design Patterns P of EAA – Martin Fowler Introdução ao catálogo Pof EA. . Lazy Load. . Service Layer. . Separated Interface. . Referências. . Value Object. . Query Object. . Repository. . Identity Map. . Unity of Work. . Active Record.
  • 3. Introdução ao Catálogo P of EAA  O livro Patterns of Enterprise Application Architecture começou a ser desenvolvido depois de Davi Rice e Martin Fowler terem dado palestras sobre arquitetura J2EE e refletido sobre como os conceitos que haviam aprendido foram cruciais para o desenvolvimento de seus projetos.
  • 4.  O livro tem o propósito de definir padrões de projeto para ajudar desenvolvedores, indepentente da plataforma que utilizam.  O livro é dividido em duas partes:  1ª parte: Tutorial sobre arquitetura de aplicações corporativas.  2ª parte: Referência para cerca de 40 tipos de padrões de projeto.  Para cada padrão é descrito como funciona e quando usá-lo, com exemplos em Java, C# ou ambos. Introdução
  • 5. Lazy Load Lazy Load Finalidade O Lazy Load tem a finalidade de interromper o processo de carregamento de objetos que não serão usados. Ele coloca um marcador na estrutura dos objetos de modo que se os dados forem necessários à aplicação serão carregados apenas quando forem usados.
  • 6. Lazy Load Como é implementado?  Inicialização Tardia (Lazy Inicialization).  Proxy Virtual (Virtual Proxy).  Armazenador de Valor (Value Holder).  Fantasma (Ghost).
  • 7. Lazy Load Inicialização Tardia (Lazy Inicialization)  Abordagem mais simples.  Consiste em verificar se um campo é nulo antes de acessá-lo. Sendo nulo, ele calcula o valor do campo antes de retornar o mesmo.  Para que fucione, o campo a ser lido deve estar auto-encapsulado.
  • 9. Lazy Load Proxy Virtual (Virtual Proxy)  É um objeto que parece com o objeto que deveria estar no campo, mas não contém nada.  Somente quando um dos seus métodos é chamado, ele carrega o objeto correto a partir do banco de dados.
  • 11. Lazy Load Armazenador de Valor (Value Holder)  É um objeto que encapsula algum outro objeto.  Para obter o objeto subjacente, você solicita seu valor ao armazenador de valor.  Sua desvantagem é que a classe precisa saber que ele existe.
  • 14. Lazy Load Fantasma (Ghost)  É o objeto real em um estado parcial. Ao ser carregado do banco de dados, ele contém apenas seu ID.  Sempre que o acesso a um campo for solicitado, ele carrega seu estado completo.  Um fantasma é um objeto, onde cada campo é inicializado tardiamente.  O objeto é carregado de forma incompleta, porém com seu identificador (chave) e carrega seus dados no primeiro acesso a suas propriedades.
  • 16. Separated Interface  Define uma interface para desacoplar uma camada de outra. As vezes é preciso contradizer a regra de dependencia entre camadas, por exemplo, uma camada acessar outra sem passar pelas intermediarias ou uma camada não depender de outra. Separated Interface
  • 17.  Para por exemplo, a camada de apresentação acessar a camada de pesistência diretamente, a apresentação passaria a depender da interface da camada de pesistência.  Assim, mesmo que as classe da camada de pesistência mudem, se a interface não mudar, a apresentação não precisará mudar. Separated Interface
  • 21. Value Object  Em diversas aplicações orientadas a objetos, muitos objetos possuem uma Identidade.  Uma importante classe de domínio como a classe Cliente terá vários atributos. O valor desse atributos é que diferenciam diferentes objetos de sua classe.  Portanto, um objeto com uma Identidade, PERSISTE, ou seja, ele existe durante toda aplicação. Value Object
  • 22. Value Object Value Object  Mas existem situações em que alguns objetos NÃO precisam ter uma Identidade, pois esses objetos representam apenas características singulares de outros objetos.  Exemplos: Classe Dinheiro, Data, etc.  Esses objetos não precisam de uma identidade, pois representam somente valores, ou seja, eles não precisam persistir durante toda a aplicação.
  • 23.
  • 24.
  • 25. Query Object  Segundo FOWLER (2006), Query Object é uma especialização do padrão Interpreter que constroi frases de consulta SQL com base em uma estrutura de objetos.  O padrão propõe que se utilize um objeto para conter todos os parametros necessários a construir a consulta SQL.  Um objeto que representa uma consulta ao banco de dados. Query Object
  • 28.
  • 29.
  • 30. Identity Map  Segundo FOWLER (2006), esse padrão assegura que cada objeto seja carregado apenas uma vez, mantendo cada objeto carregado em um mapa. Assim, ele procura os objetos usando o mapa quando se referindo a eles.  Um identity map mantém um registro de todos os objetos que foram lidos do banco de dados em uma única transação de negócio. Identity Map
  • 31. Identity Map  Sempre que quiser um objeto, você verifica o Mapa de identidade antes para ver se já o tem, semelhante a um cache.  Identity Map explicito: É acessado com métodos distintos para cada tipo de objeto que é preciso.  Identity Map genérico: Usa um único método para todos os tipos de objetos. Identity Map
  • 33. Active Record  O padrão Active Record encapsula a lógica para se criar uma linha na tabela correspondente a respectiva classe.  Onde,cada objeto sabe como ler e gravar seus dados no banco de dados, não existe uma camada específica para realizar essa tarefa. Active Record
  • 34.  Este tipo de estrutura é indicada para sistemas menores onde a lógica de dominio não é tão complexa, como inserções,exclusões etc..  A estrutura dos dados dos objetos do Active Record devem ser exatamente iguais com a estrutura dos dados no Banco de Dados, o que dificulta a manutenção em razão da dependência entre os mesmos. Active Record
  • 38. Repository  O padrão Repository faz a mediação entre o domain model e as camadas de mapeamento de dados, agindo como uma coleção de objetos de domínio em memória FOWLER (2006).  Esta camada abstrai o acesso a camada de persistência, isolando a lógica de acesso aos dados de qualquer outra camada da aplicação. Repository
  • 39.  Este padrão é indicado para o desenvolvimento de aplicações que possuem um grande número de classes e nescessitam de consultas mais pesadas, além de ajudar a minimizar as duplicações nas lógicas das consultas. Repository
  • 41.
  • 42. Unity of Work  Mantém uma lista de objetos afetados por uma transação de negócio e coordena a gravação das alterações e a desolução de problemas de concorrência FOWLER (2006). Unity of Work
  • 43. Unity of Work  Uma Unit of work pode ser entendida como uma sessão ou objeto que mantém o registro de todas as atividades relacionadas ao banco de dados, realizadas durante uma transação de negócio, sendo também responsável pelo gerenciamento dos problemas de concorrência que podem ocorrer oriundos dessa transação. Unity of Work
  • 44. Unity of Work  É indicada para situações onde são necessários:  Efetuar logs.  Tracing.  Gerenciar as transações.  Promover a testabilidade dos sistema, etc. Unity of Work
  • 47. Service Layer  Define os limites de uma aplicação com uma camada de serviços que estabelece um conjunto de operações disponíveis e coordena a resposta da aplicação em cada operação.  Uma Camada de Serviço define a fronteira de uma aplicação e seu conjunto de operações disponiveis, a partir da perspectiva das camadas de interface dos clientes. Service layer
  • 48. Service Layer  Ela encapsula a lógica de negócio da aplicação, controlando as transações e coordenando as respostas na implementação de suas operações. Service layer
  • 51.
  • 52. Referências ALMEIDA, Erico Renato Oliveira, Padrões de Projeto – Value Object. 2007. Disponivel em: <http://imasters.com.br/artigo/7293/linguagens/padroes-de- projeto-value-object/>. Acesso em: 16 Mar 2014. FOWLER, Martin. Padrões de Arquitetura de Aplicações Corporativas / Martin Fowler; tradução Acauan Fernandes. - Porto Alegre : Bookman, 2006. PIRES, Glauber Magalhães. Lazy Loading – Inicialização Preguiçosa. Disponivel em: <http://www.glauberpires.com.br/arquitetura/4-Lazy %20Loading.pdf>. Acesso em: 16 Mar 2014. RANIERI, Bárbara. Lazy Load – Quando usar?. 2013. Disponivel em: <http://www.princiweb.com.br/blog/programacao/aspnet/lazy- load-quando-usar.html>. Acesso em: 16 Mar 2014. Referências
  • 53. SANTOS, Jadson José. Análise da Utilização de padrões no Desenvolvimento de Software em Camadas. 2008. Disponivel em: <http://jadsonjs.files.wordpress.com/2008/03/artigo-padroes- de-projeto-padroes-basicos.pdf>. Acesso em: 16 Mar 2014. TABORDA, Sérgio, Query Object. 2009. Disponivel em: <http://sergiotaborda.wordpress.com/desenvolvimento-de- software/java/patterns/query-object/>. Acesso em: 16 Mar 2014. Referências