Problema com encapsulamento usando classe abstrata

2 respostas
Pilantra

E ae galera.

Eu tenho uma classe abstrata chamada Arquivo, e duas filhas (por enquanto) chamadas Foto e Pdf. Toda a regra de tratamento de arquivos de foto e pdf, estão encapsuladas nas respectivas classes.

Porém me veio na cabeça o seguinte. O usuário submete um arquivo. Eu vou ter um byte[] e o controller não vai fazer idéia do que é. Dae eu mando pra classe Arquivo.

Dae vem o problema. Quem vai controlar a regra e validação, vai ser Foto e Pdf. Se eu fizer um método que me retorne qual tipo de arquivo é (Foto ou Pdf), vai quebrar todo meu encapsulamento.

Qual o jeito mais correto de resolver esse problema? Existe algum pattern pra resolver isso, para que eu possa estudar?

Obrigado.

2 Respostas

P

poderia criar 1 método abstrado na classe arquivo… chamando “valida”…
ai PDF e Foto implementa como deve ser a sua respectiva validação…

ai vc chama esse método “valida” no momento que achar mais oportuno…

Pilantra

Então, as classes filhas, já tem essa validação. Eu vou tentar explicar em código pra você ver o problema:

byte[] arquivoVindoDaView = arquivo; Arquivo arquivo = Arquivo.getInstance(arquivoVindoDaView);

Se eu usar um visitor, eu quero que ele me retorne se é Foto ou Pdf. É isso que está dando nó na minha cabeça. Eu não sei se existe um jeito “bonitinho” de fazer isso, ou não vai ter jeito, vou ter que fazer IF no método getInstance da classe Arquivo.

Criado 11 de setembro de 2012
Ultima resposta 11 de set. de 2012
Respostas 2
Participantes 2