none
OOP - Dynamics AX Duvida RRS feed

  • Pergunta

  • Pessoal, bom dia.

    No trabalho, estamos tendo uma duvida quanto a uma forte caracteristica das classes construidas no Dynamics AX.

    As classes Pai, algumas vezes abstrattas outras vezes não, geralmente contém um método Static de nome Construct que é responsável por instanciar as classes filhas de acordo com um parametro passado a este pai:

    Exemplo:

    Classe SalesFormLetter - responsável pela lógica de negócios referentes aos processos de vendas.
    Filhos SalesFormLetter_Confirm,
             SalesFormLetter_Invoice e etc.

    O que acontece é que ná classe pai SalesFormLetter existe um metodo estatico construct que instancia alguma das classes filhas de acordo com o Status da Ordem de Venda.

    Pessoal, isto não é um ato em desacordo com a arquitetura de Orientação à Objetos? Uma classe pai não tem obrigação de saber exatamente quem são seus filhos, mas nestes casos no Dynamics sim.

    Qual Pattern o AX se baseia para isto?

    Obrigado pessoal.


    asd
    quinta-feira, 7 de outubro de 2010 12:31

Respostas

  • Olá Zupa,

     

    Do ponto de vista de OOP, você está correto em dizer que uma classe pai não deveria saber detalhes sobre as suas subclasses. Ocorre que o pattern "construct" usado extensivamente no Ax não viola este princípio: o fato dos métodos contruct serem estáticos não os fazem parte da hierarquia da classe, uma vez que métodos estáticos não podem ser herdados e não têm característica polimórfica. Sendo assim, os métodos contruct estão simplesmente servindo como Factory Methods. Eles poderiam muito bem estar presentes em classes factory distintas, mas um desenvolvedor Ax já está acostumado a ver o método "construct" como candidato para ser o Factory Method das classes concretas de uma hierarquia (como a hierarquia de SalesFormLetter que você citou).

    Abraço!

    ------

    Fabio

     

    terça-feira, 19 de outubro de 2010 09:56