Aggregates

2 respostas
tnaires

Olá

Suponham que eu tenha em meu modelo as seguintes classes:
package modelo.enquetes;

class Questao {
    // Atributos, métodos, etc

    Questao(String enunciado) {
        this.enunciado = enunciado;
    }
}

package modelo.enquetes;

public class Enquete {
    private List<Questao> questoes;
    // Outros atributos irrelevantes para o exemplo

    public Enquete() {
        List<Questao> = new ArrayList<Questao>();
    }

    public void novaQuestao(String enunciado) {
        questoes.add(new Questao(enunciado));
    }

    public void removerQuestao(int index) {
        questoes.remove(index);
    }
}
Notem que Enquete e Questao formam um agregado. A manipulação de Questoes se dá apenas pela classe Enquete, e a classe Questao não possui visibilidade fora do módulo ( pacote ).

O problema é que dessa forma fica difícil criar um DAO para a entidade Questao, uma vez que essa classe não é visível para a camada de infra-estrutura ( os DAOs estão no pacote infra.persistencia ), não sendo possível assim instanciá-los e manipulá-los diretamente.

Algum de vocês já passou por isso? Como contornaram esse problema?

Abraços

2 Respostas

sergiotaborda

A minha sugestão é que não coloque o objeto de persistência em um pacote separado. Ele poderá então acessar ambas as classes e manipular o que for necessário para garantir a persistência.
Afinal de contas se os objetos trabalham juntos pertencem no mesmo pacote. Forçar uma separação fictícia só porque parece bonita não tem utilidade e não é esse o propósito do conceito de pacote.

tnaires

Pois é… Vou fazer isso mesmo.
Inclusive, tava lendo aqui no JavaPractices…

http://www.javapractices.com/topic/TopicAction.do;jsessionid=A37560B9E10339974EA28C66F392E879?Id=205

Obrigado.

Criado 9 de junho de 2008
Ultima resposta 9 de jun. de 2008
Respostas 2
Participantes 2