Aplicando padrões de projeto

Não vou te abandonar eu prometo!!!

Qualquer coisa tamo ai :slight_smile:

Ok, Abraços
Daniel.

É interessante que o atributo [color=darkblue]factory[/color], não seja estático também (não vai fazer diferença na funcionalidade, mas acho que fica mais elegante… já que não é necessário que ele seja estático)

mas ai dá erro lá no inserir : EntityManager manager = HibernateUtil.getManager();

pq um é estático e o outro não…

Exatamente… é esse erro que vai te forçar a usar o singleton… como o Daniel deu como exemplo… a forma seria:

aaaahhhhh ahahahahaha…entendiii…que alegria! :smiley:

cm eu resumiria isso?..o meu singleton é útil por que…?

… permite que apenas um objeto da classe HibernateUtil seja criado… por consequencia apenas uma factory será criada na aplicação… desde que essa factory sempre seja acessada pelo HibernateUtil…

Olha, e estou pensando o que vou ganhar por causa desse seu trabalho de faculdade,

Penso principalmente sobre os meus direitos autorais já que estou vendo que minhas palavras foram colocadas no comentario do seu código hahaha…

Calma, brincadeira :slight_smile:

Abraços
Daniel

Uma lista de Design Patterns para você escolher:

Abstract Factory
Factory Method
Singleton
Adapter
Composite
Decorator
Facade
Proxy
Chain of Responsability
Command (boa sugestão do Daniel para seu problema)
Interpreter
Iterator
Observer
Strategy
Template Method

Traduzindo HibernateUtil.getInstance().getEntityManager() ;

A classe chama o próprio objeto que eu criei lá dentro da HibernateUtil que chama o método da mesma classe que faz a persistência…e eu nunca vou conseguir chamar o método de outra maneira no sistema ponto e virgula??

[quote]Olha, e estou pensando o que vou ganhar por causa desse seu trabalho de faculdade,

Penso principalmente sobre os meus direitos autorais já que estou vendo que minhas palavras foram colocadas no comentario do seu código hahaha…

Calma, brincadeira

Abraços
Daniel[/quote]

eu só me inspirei nas tuas palavras…não copiei… :wink:

heeheh

É por aí…

Mas nos termos corretos seria…

Através do método estático getInstance da classe HibernateUtil, eu retorno o objeto que criei lá dentro. Desse objeto eu chamo o método getEntityManager que retorna um objeto EntityManager

(ainda nao tem nenhuma persistencia sendo feita)

hahahaha…a é…

e tu vai cobrar direitos autorais tbm rogelgarcia??

Não não… hoje eu tô de bom humor… hehehehe

Qual é o próximo Design Pattern?

Bem, vamos lá…

Vamos entender pra que serve essa sua classe singleton…

A classe HibernateUtil singleton que voce criou tem como principal finalidade guardar(encapsular) um EntityManagerFactory.

Esse objeto EntityManagerFactory fica guardado nessa classe pois não faz sentido ficar dando new() dele por todo o sistema, porque? Porque ele é uma fabrica (factory) que não muda de estado.

Então através desse objeto HibernateUtil.getInstance() voce consegue acessar essa sua factory, ou seja quem quer que seja vai so pode ter uma instancia da sua HibernateUtil e consequentemente apenas um acesso a factory.

E qual a ideia dessa factory, que por consequencia tambem é um padrão… criar diversas instancias de entity manager getEntityManager() pra quem precisar, ou seja ela fabrica objetos.

Entendeu?

Abraços
Daniel.

entendii…pois então…esta era minha próxima duvida…eu ainda estava na primeira…eu tenho dois padrões em uma classe sóó?

Factory: define uma interface para a criação de um objeto, mas deixa as classes escolherem qual classe deve ser instanciada. Cm assim?

EntityManagerFactory é uma factory (tá escrito até no nome… heheh)

A HibernateUtil… nao é uma factory nao… poderia até ser um façade de forçar um pouco a barra…

Na verdade voce tem um padrão nessa classe que é o Singleton e o outro padrão está na classe EntityManagerFactory (internamente)

Mas não se preocupe com esse pattern por enquanto, a menos que voce precise usar rsrsrs, veja o Command que eu te disse que vai ser bem facil entender

Abraços
Daniel

[quote=ArianeRebellato]

Factory: define uma interface para a criação de um objeto, mas deixa as classes escolherem qual classe deve ser instanciada. Cm assim?[/quote]

Boa pergunta… como assim? :smiley:

Onde você tirou isso?

Tá certo…Obrigada por enquanto gente…eu vou pesquisar este padrão que vcs sugeriram e volto a postar… :slight_smile: