Iniciação científica, framework padrões, preciso opinioes

6 respostas
duardor

:?: :?: :?: :?: :?: :?: :?: :?: :?: :?:
Ae galera to precisando de uma ajuda…

Estou num grupo de studo para projeto de iniciação cinetífica e meu orientador me passou a seguinte tarefa:

Implementar uma espécie de framework que ajude a implementar padrões de projeto…
Inicialmente eu planejo implementar o pattern conhecido como facade.
Imagino utilizar a api de reflexao para estudar as classes selecionadas pelo usuario e listar os metodos públicos para que o usuário selecione de modo que o programa monte uma classe que conterá os acessos e codigo vazios de modo que o programa monte a classe que implemente o facade…
ok para o facade tudo bem…
Mas o objetivo mais adiante deste projeto sera que eu consiga implementar e integrar novos padroes ao framework muito facilmente…
Ou seja preciso de uma forma generica para implementar padroes…

ALGUEM AI PODE ME AJUDAR???
Me deem uma ideia , algo , um estalo!!!

Obrigado desde já!!!

Abraços

6 Respostas

cv1

Antes de conseguir uma forma generica para implementar padroes, vc precisa de um conjunto de meta-dados que descrevam suas classes e relacionamentos.

Se voce nao tiver saco de fazer parsing de codigo Java, voce pode construir um plug-in para uma IDE (de preferencia uma boa, como o Eclipse, por exemplo :)), e ela te dará todos os metadados que vc precisa pra fazer isso, sem ter que usar reflection ou esbarrar onde as reflections ainda nao chegam (por exemplo, tipagem de collections).

Outra técnica pra isso seria usar atributos à lá xdoclet. O QDox (http://qdox.codehaus.org) pode te ajudar nisso.

Não se esqueca de mandar mais noticias, eu estou bastante interessado no que pode sair daí :slight_smile:

duardor

ae cv
seguinte:
eu tenho q entregar algum prototipo pro professor nesta SEXTA
mesmo q seja apenas um unico padrao de forma nao generica e talz… vou fazer o facade…
eu tava pensando em fazer do seguinte modo:

vou criar tipo uma estrutura de um programa onde eu possa ir adicionando os padroes…
como no eclipse onde vc bvota as classes sobre o diretorioi plugin…
tais classes teriam q implementar dois metodos

callWindow - que chama a janela de onde o usuario ira dar entrada ao padrão (por exemplo no facade ele iria escolher as classes como eu disse acima)…
ao final de callWindow o meu programa iria chamar o doPattern

doPattern- implementa o padr"ao, aqui ficará a maioria do codigo java e de abertura de arquivos, criacao de arquivos, usoi de metodos da reflection etc…

num primeiro momento to pensando em fazer isso…
alguma sugestão?

Abraços

cv1

Bom, como a coisa é pra sexta-feira, eu imagino que vc está numa correria danada, então vou deixar algumas sugestões aqui, mas que provavelmente só vão poder ser implementadas no futuro:

  • Essa API não está genérica o suficiente, e não exerce controle sobre os metadados do código que vc vai disponibilizar ao plugin (a menos que vc queira que esses dois métodos sejam responsáveis por uma quantidade absurda de código :))

  • O que você está usando pra gerar código? É uma ótima idéia dar uma olhada no Velocity (http://jakarta.apache.org/velocity), antes que vc acabe fazendo tudo na base do StringBuffer :smiley:

PS: Tá cheio de coisa sobre Velocity por aí, inclusive aqui no GUJ, caso vc ainda não saiba utilizá-lo :slight_smile:

[]'s!
-cv

duardor

bom, mais no futuro eu pretendo utilizar o velocity mesmo mas pra SEXTA (!!!) eu tenho q fazer de um modo mais sujo e rápido…

queria uma explicação melhor sobre os metadados que vc cita…
nao poderia coloca-los em formato XML???
o q exatamente vc está chamando de ‘meta-dados’?

Abraços

dukejeffrie

Dá uma olhada legal no javadoc do java.lang.reflect, em especial InvocationHandler e Proxy.

Se vc quer um framework bem simples, vc pode ter apenas um conjunto de interfaces e classes que descrevem justamente seus metadados. Por exemplo, uma Facade poderia ter uma cara assim:

public interface Facade {
    public Map listMethods();
    public Object invokeMethod(String name, Object[] args);
  }

Vc criaria uma AbstractFacade que implementa o invokeMethod e alguma utilidade do tipo:

public Class[] getArgumentTypes(String methodName);

[]s

S

opa! temos muito em comum! faco Católica tb, e estou numa IC heheh
soh falta a certificacao Java :lol:
E nao sei te ajudar com isso nao hehehe :frowning:

Criado 6 de maio de 2003
Ultima resposta 13 de mai. de 2003
Respostas 6
Participantes 4