Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
O framework consiste de uma classe utilitária chamada Rule e uma interface chamada Specification.
Para definir uma regra de negócio, voce implementa a interface Specification. Com sua implementação pronta, você cria uma instância de Rule passando a sua regra de negócio (implementação de Specification) como parametro.
Veja o exemplo para entender como utilizar a classe Rule e a interface Specification para aplicar regras de negócio numa classe hipotetica Pessoa.
Uma Pessoa tem os seguintes atributos: nome, idade e sexo.
Para validar uma Pessoa, foram definidas as seguintes regras:
- O nome não pode ser null e deve começar com uma letra maiúscula e ter uma ou mais letras minúsculas;
- A idade não pode ser negativa;
- O sexo só pode ser 'M' ou 'F'.
Primeiro definimos a classe Pessoa conforme abaixo:
Agora criamos três especificações distintas para as regras que validam nome, idade e sexo da Pessoa.
Agora ja temos a classe Pessoa e as especificações das regras para nome, idade e sexo criadas.
Podemos então utilizar a classe Rule para validar instancias de Pessoa de diversas formas, por exemplo:
Abaixo estão os dois fontes que compões o FrameWork
[[]] _________________ Nome real: Carlos F. Heuberger
Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!
Sim, amigos meus que usam bastante TDD disseram que facilitou muito a vida deles.
Acho bacana que dá pra criar repositórios de regras de negócio sem depender de maquinas de inferencia pesadas como o Drools.">http://www.jboss.org/drools"">Drools. _________________Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Sim, amigos meus que usam bastante TDD disseram que facilitou muito a vida deles.
Acho bacana que dá pra criar repositórios de regras de negócio sem depender de maquinas de inferencia pesadas como o Drools.">http://www.jboss.org/drools"">Drools.
Impressionado! Marquei para ler mais a fundo mais tarde. _________________William Antônio Siqueira Siga-me no Twitter - Tudo sobre JavaFX e um pouco mais
Veja meu Blog Aprendendo JavaFX
Impressionado! Marquei para ler mais a fundo mais tarde.
É, só quem realmente entende de desenvovlimento orientado a objetos para elogiar.
Agora vou lhes contar uma história, ano passado apresentei esta solução para resolver os seguintes problemas de um projeto:
- Acabar com o código repetido das regras de negócio que estavam implementadas em varios metodos private;
- Permitir que sejam implementados os testes unitários das regras de negócio;
- Permitir que em determinadas situações so fossem analisadas algumas regras e em outras situações mais regras;
Sabem o resultado?
- Os analistas e responsaveis pelos testes do sistema aprovaram de imediato.
- O gerente do projeto achou interessante, embora não tenha compreendido por não ter o conhecimento necessário de POO e de Java.
- E o melhor fica para o final: O arquiteto rejeitou a solução pois "é muito complicado usar o método 'isSatisfiedBy' da classe 'Rule' e não ha problema em duplicar o codigo de regras de negócio em métodos private"
Resumindo, hoje esse projeto não tem reaproveitamento dessas regras de negócio nem testes unitarios, é cada um por si repetindo o mesmo código em métodos private...
Decepcionante, mas, a vida continua... _________________Ricardo Artur Staroski, OCP-JP
Blumenau - SC
[...]
Sabem o resultado?
- Os analistas e responsaveis pelos testes do sistema aprovaram de imediato.
- O gerente do projeto achou interessante, embora não tenha compreendido por não ter o conhecimento necessário de POO e de Java.
- E o melhor fica para o final: O arquiteto rejeitou a solução pois "é muito complicado usar o método 'isSatisfiedBy' da classe 'Rule' e não ha problema em duplicar o codigo de regras de negócio em métodos private"
Resumindo, hoje esse projeto não tem reaproveitamento dessas regras de negócio nem testes unitarios, é cada um por si repetindo o mesmo código em métodos private...
Decepcionante, mas, a vida continua...
déjà vu!!!
Lembra um pouco a empresa onde trabalho [:-(
bem triste, uma solução simples, fácil de entender e implementar (Framework com apenas 2 classes!), aceita pelos 'usuários, mas mesmo assim bloqueado por alguém que nem vai ser afetado diretamente...
[[]] _________________ Nome real: Carlos F. Heuberger
Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!
- E o melhor fica para o final: O arquiteto rejeitou a solução pois "é muito complicado usar o método 'isSatisfiedBy' da classe 'Rule' e não ha problema em duplicar o codigo de regras de negócio em métodos private"
staroskiPosts:3369
O framework que desenvolvi foi baseado num design pattern chamado Specification">http://martinfowler.com/apsupp/spec.pdf"">Specification criado por Martin">http://martinfowler.com/"">Martin Fowler.
O framework consiste de uma classe utilitária chamada Rule e uma interface chamada Specification.
Para definir uma regra de negócio, voce implementa a interface Specification. Com sua implementação pronta, você cria uma instância de Rule passando a sua regra de negócio (implementação de Specification) como parametro.
Veja o exemplo para entender como utilizar a classe Rule e a interface Specification para aplicar regras de negócio numa classe hipotetica Pessoa.
Uma Pessoa tem os seguintes atributos: nome, idade e sexo.
Para validar uma Pessoa, foram definidas as seguintes regras:
- O nome não pode ser null e deve começar com uma letra maiúscula e ter uma ou mais letras minúsculas;
- A idade não pode ser negativa;
- O sexo só pode ser 'M' ou 'F'.
Primeiro definimos a classe Pessoa conforme abaixo:
Agora criamos três especificações distintas para as regras que validam nome, idade e sexo da Pessoa.
Agora ja temos a classe Pessoa e as especificações das regras para nome, idade e sexo criadas.
Podemos então utilizar a classe Rule para validar instancias de Pessoa de diversas formas, por exemplo:
Abaixo estão os dois fontes que compões o FrameWork
_________________Ricardo Artur Staroski, OCP-JP
Blumenau - SC
simuPosts:9416
Boa idéia!
Muito útil!
mas achei um erro no exemplo:
acho que deveria ser:
[[]]
_________________ Nome real: Carlos F. Heuberger
Removeram os meus direitos de administrador e moderador - sem aviso, pela segunda vez - contate o ombudsman (?), a equipejavafree ou a "alta gerência" se necessário - Que pena... que terminou dessa maneira!
"The mod javafree deserves, but not the one it needs right now."
--------------------
Não leio nem respondo MPs!
This posting is provided AS IS with no warranties and confers no rights.
staroskiPosts:3369
É verdade Simu, já corrigi.
Isso aconteceu porque eu simplesmente copiei o meu JavaDoc, colei aqui no fórum e fui adequando com tags bb onde necessario.
E no JavaDoc não tem o prefixo 'regraDo' nas instancias de Rule.
Obrigado pela ajuda!
_________________Ricardo Artur Staroski, OCP-JP
Blumenau - SC
staroskiPosts:3369