Академический Документы
Профессиональный Документы
Культура Документы
PR
AGENDA
Antes de apresentar o DAO, veremos o padro FACTORY frequentemente utilizado em conjunto com DAO. Para entender o modelo DAO, faremos um breve introduo ao padro. Em seguida, implementaremos o modelo num programa simples de cadastro de clientes. Tpicos relacionados: Camada do modelo do padro MVC, banco de dados relacional
FBRICA SIMPLES
Marguerita
Portuguesa
???
Marguerita <<instancia>>
Portuguesa
???
Encapsular a criao das Pizzas em um objeto SimpleFactory (ou fbrica simples) que sabe como criar objetos das subclasses da classe Pizza.
Desta maneira todo cdigo que for instanciar pizzas, utiliza a classe fbrica (ex. Pizzaria). Mudanas na hierarquia de Pizzas so absorvidas pela fbrica.
Pizza
Marguerita <<instancia>>
Portuguesa
???
FBRICA ABSTRATA
FBRICA ABSTRATA
Situao problema:
H duas pizzarias, uma no Juvev e outra no Centro Os cardpios diferem nas pizzas oferecidas e no modo de preparao.
Por exemplo: No Juvev, tem pizza Calabresa (no Centro no) No Centro, Portuguesa assada por menos tempo e no leva azeitonas.
O sistema de pedido de pizzas centralizado, ento estes diferentes cardpios e modos de preparao devem ser levados em conta.
10
FBRICA ABSTRATA: PROBLEMA O fbrica simples resolve o problema apenas para uma pizzaria
Para ter diferentes cardpios por pizzaria, teriamos que fazer duas fbricas
new PizzariaJuveve new PizzariaCentro
ainda assim, no poderiamos criar pizzas com receitas diferentes para as duas pizzarias, pois o mtodo criarPizza das Fbricas est atrelado s mesmas pizzas.
Ento teriamos que criar nova subclasse para a portuguesa especial do centro:
PortuguesaCentro
11
Pizza
Portuguesa
Calabresa
Marguerita
PortuguesaCentro <<instancia>>
comunica-se Main
comunica-se
12
ABSTRACT FACTORY Baixar o cdigo Factory/ExemploFactory3 para ver com resolver os problemas com o padro AbstractFactory Acrescentar uma nova Pizzaria que faz uma Pizza exclusiva de Presunto Rascunhar o diagrama de classes e comparar com o do SimpleFactory
Observar os mtodos criarFbrica e criarPizza
13
Pizza
Portuguesa
Calabresa
Marguerita
PortuguesaCentro <<instancia>>
14
Aplicao
Quando o sistema deve ser independente de como os produtos so criados, compostos e representados O sistema deve ser configurado para trabalhar com diversas famlias de produtos Vale a pena utiliz-lo mesmo quando h apenas uma fbrica concreta? Sim, por causa do desacoplamento entre a famlia de produtos e o seu uso
15
16
PRODUTO ABSTRATO Pizza PRODUTO CONCRETO Portuguesa Calabresa Marguerita PortuguesaCentro <<instancia>> PizzariaJuvev PizzariaCentro <<instancia>> PizzariaAbstrata FBRICA ABSTRATA FBRICA CONCRETA
<<instancia>>
comunica-se Main
17
PADRO DAO
18
PADRO DAO
DATA ACCESS OBJECT construir uma camada de acesso aos dados de forma a isolar a camada do modelo da camada de persistncia. Baixo acoplamento.
Classes do Modelo M1 BD
LDAP
Persistncia
M2
DAO
Mn
xml
19
DAO: BENEFCIOS Pode-se mudar o mecanismo de persistncia a qualquer momento sem ter que modificar a camada do modelo.
Interessante para fazer nova distribuio de um sistema. Dois clientes diferentes de um sistema podem querer utilizar BDs diferentes
20
Por exemplo,
encapsular conexes com o(s) BD(s) e os statements SQL
21
Interface DAO
produto abstrato:
22
23
24
ClienteSerial
PRODUTO CONCRETO
comunica-se CtrlCadastro O CtrlCadastro pede Fbrica para instanciar uma das duas DAOs concretas. A partir da o controle interage de forma transparente com esta DAO, seja ela JAVADB ou Serializvel.
PROF. CESAR A. TACLA UTFPR/CURITIBA
25
EXERCCIO 1
26
EXERCCIO 2
OBJETOS DE TRANSFERNCIA
Notar no exerccio anterior que no foram testadas excees tal como inexistncia de um cliente a ser excludo ou cliente j existente na incluso. H duas maneiras de resolver isto:
Lanar uma exceo e peg-la com try/catch; Utilizar um objeto de transferncia que serve ao DAO para comunicar este tipo de problemas ou outros dados ao objeto da camada do modelo. Este objeto tambm pode servir para que o objeto da camada do modelo se comunique com o DAO.
27
EXERCCIO 2
Fazer
Na incluso, resolver o problema de cliente duplicado com lanamento de exceo
Cuidados: a exceo no pode ser especfica ao mecanismo de persistncia - por exemplo SQLException pois caso o modo de persistncia seja alterado esta exceo pode no fazer sentido.
Na consulta, excluso e alterao utilizar um objeto de transferncia que leve a mensagem ao objeto cliente da camada modelo soluo em DAO/ExemploDAO-Excecao
28
DAO E CRUD interessante consultar a implementao do padro DAO para uma GUI CRUD pode ser encontrada em
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Porm, observe que na implementao acima, no h separao entre GUI e controle. Os dois esto juntos na GUI. No catlogo J2EE, h vrios exemplos de padres
29