Olá, Estou desenvolvendo um sistema para estudos, e gostaria da opinião e sugestões de vocês sobre a seguinte implementação do padrão factory. Como terei vários tipos de objetos que podem ser criados, inicialmente criei uma interface para padronizar todas as factories do sistema.
public interface EntityFactoryInterface<T> {
public T getEntity(T entity);
public T getEntity(Integer id);
public T getEntity();
}
Nesta interface são disponibilizados três métodos. Nos dois primeiros, a factory cria o objeto buscando as suas informações de um banco de dados, e caso não encontre, cria um novo objeto. No terceiro método a factory cria um novo objeto diretamente. Segue um exemplo da implementação.
public class UnidadeMedidaFactory implements EntityFactoryInterface<UnidadeMedida>{
@Autowired
private UnidadeMedidaDao unidadeDao;
@Override
public UnidadeMedida getEntity() {
return new UnidadeMedida();
}
@Override
public UnidadeMedida getEntity(Integer idUnidade){
UnidadeMedida unidade = new UnidadeMedida();
unidade.setIdUnidadeMedida(idUnidade);
return getEntity(unidade);
};
@Override
public UnidadeMedida getEntity(UnidadeMedida unidade){
unidade = unidadeDao.findById(unidade.getIdUnidadeMedida());
if(unidade == null){
unidade = new UnidadeMedida();
}
return unidade;
}
}
Esta seria uma boa implementação do padrão factory, ou existe algo que seria melhor fazer de outra forma?