SlideShare uma empresa Scribd logo
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.
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
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
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
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
Padrões de projeto - Martin Fowler - P of EAA
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
Padrões de projeto - Martin Fowler - P of EAA
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

Mais conteúdo relacionado

Mais procurados

Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
Andre de Carvalho
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
Fábio Nogueira de Lucena
 
Diagrama de sequência
Diagrama de sequênciaDiagrama de sequência
Diagrama de sequência
Honório Júnior
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
Fabio Moura Pereira
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
Wagner Zaparoli
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
Jorge Ávila Miranda
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
Nécio de Lima Veras
 
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
Vinícius de Paula
 
Diagrama de Atividades - UML
Diagrama de Atividades - UMLDiagrama de Atividades - UML
Diagrama de Atividades - UML
Vinícius Barros
 
Modelos de banco de dados
Modelos de banco de dadosModelos de banco de dados
Modelos de banco de dados
Edgar Stuart
 
Introdução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareIntrodução à Gerência de configuração de Software
Introdução à Gerência de configuração de Software
Lucas Amaral
 
Aula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdfAula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdf
IvanFontainha
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
Eliseu Castelo
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
Portal_do_estudante_ADS
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling Language
Cloves da Rocha
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
Elaine Cecília Gatto
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetos
Daiana de Ávila
 
Uml diagrama de atividades
Uml   diagrama de atividadesUml   diagrama de atividades
Uml diagrama de atividades
Jordan Oliveira
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
Armando Daniel
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
Wise Systems
 

Mais procurados (20)

Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Diagrama de sequência
Diagrama de sequênciaDiagrama de sequência
Diagrama de sequência
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
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
 
Diagrama de Atividades - UML
Diagrama de Atividades - UMLDiagrama de Atividades - UML
Diagrama de Atividades - UML
 
Modelos de banco de dados
Modelos de banco de dadosModelos de banco de dados
Modelos de banco de dados
 
Introdução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareIntrodução à Gerência de configuração de Software
Introdução à Gerência de configuração de Software
 
Aula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdfAula 12 - Diagrama de Atividades.pdf
Aula 12 - Diagrama de Atividades.pdf
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
 
Aula UML - Unified Modeling Language
Aula UML - Unified Modeling LanguageAula UML - Unified Modeling Language
Aula UML - Unified Modeling Language
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetos
 
Uml diagrama de atividades
Uml   diagrama de atividadesUml   diagrama de atividades
Uml diagrama de atividades
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
NOSQL uma breve introdução
NOSQL uma breve introduçãoNOSQL uma breve introdução
NOSQL uma breve introdução
 

Destaque

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
Alessandro Kieras
 
Arquitetura de software - Introdução
Arquitetura de software - IntroduçãoArquitetura de software - Introdução
Arquitetura de software - Introdução
Sergio 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 Projeto
Viní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 Projeto
Vinícius de Paula
 
Jerome Bruner
Jerome BrunerJerome Bruner
Jerome Bruner
Paula Prata
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
eros.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últiplas
Gabriel De Oliveira Soares
 

Destaque (7)

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
 
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
 

Semelhante a Padrões de projeto - Martin Fowler - P of EAA

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
Marcelo Zeferino
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
Glaucio Scheibel
 
Modelagem de sistemas
Modelagem de sistemasModelagem de sistemas
Modelagem de sistemas
sauloroos01
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3
Joel Lobo
 
Aula1
Aula1Aula1
Aula1
mentrixmax
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
Wanderlei Silva do Carmo
 
Data accesss conect
Data accesss conectData accesss conect
Data accesss conect
Daniel Ortega Sequesseque
 
Dao
DaoDao
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
elliando 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 Framework
Matteus Barbosa
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
Comunidade NetPonto
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
ejdn1
 
Treinamento DDD .Net
Treinamento DDD .NetTreinamento DDD .Net
Treinamento DDD .Net
Henrique Riccio
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
Lucas Simões Maistro
 
Framework Entities na CBSoft
Framework Entities na CBSoftFramework Entities na CBSoft
Framework Entities na CBSoft
Marcius 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
 
Banco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetosBanco de dados_orientado_a_objetos
Banco de dados_orientado_a_objetos
Fábio José da Silva
 
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
Fernando Camargo
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
elliando dias
 
Java7
Java7Java7

Semelhante a Padrões de projeto - Martin Fowler - P of EAA (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
 

Mais de 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ódigo
Aricelio Souza
 
Metodologia Ágil Scrum
Metodologia Ágil ScrumMetodologia Ágil Scrum
Metodologia Ágil Scrum
Aricelio 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 MVVM
Aricelio Souza
 
Tipos de Servidores
Tipos de ServidoresTipos de Servidores
Tipos de Servidores
Aricelio 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 exemplos
Aricelio Souza
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
Aricelio Souza
 
Ataques DOS, DDOS e Scamming
Ataques DOS, DDOS e ScammingAtaques DOS, DDOS e Scamming
Ataques DOS, DDOS e Scamming
Aricelio 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 Scamming
Aricelio 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 CAP
Aricelio Souza
 

Mais de Aricelio Souza (10)

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
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
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
 

Último

se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
ronaldos10
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
Faga1939
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
snerdct
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
Ismael Ash
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
zetec10
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ismael Ash
 

Último (6)

se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docxse38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
se38_layout_erro_xxxxxxxxxxxxxxxxxx.docx
 
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
INTELIGÊNCIA ARTIFICIAL + COMPUTAÇÃO QUÂNTICA = MAIOR REVOLUÇÃO TECNOLÓGICA D...
 
Apresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimizaçãoApresentação sobre Deep Web e anonimização
Apresentação sobre Deep Web e anonimização
 
Subindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWSSubindo uma aplicação WordPress em docker na AWS
Subindo uma aplicação WordPress em docker na AWS
 
Aula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústriaAula combustiveis mais utilizados na indústria
Aula combustiveis mais utilizados na indústria
 
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de   DevOps/CLoudFerramentas que irão te ajudar a entrar no mundo de   DevOps/CLoud
Ferramentas que irão te ajudar a entrar no mundo de DevOps/CLoud
 

Padrões de projeto - Martin Fowler - P of EAA

  • 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.
  • 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
  • 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
  • 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
  • 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