Archief - Java velden laden vanuit XML en andere formaten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Forum

Legacy Member
Hallo,

Ik wou eens vragen of iemand misschien weet of er bepaalde constructies of oplossingen bestaan om volgend probleem op te lossen. Ik zou graag de velden van een Java-object laden met behulp van een extern XML bestand. Ik kan in de klasse dan een methode loadFromXML toevoegen, maar ik zou dit ook willen kunnen doen met data die in een ander formaat staat, bijvoorbeeld in JSON. Hoe zou je dit dan het best oplossen. Je kan toch moeilijk voor elke klasse die je kan opslaan subklassen gaan maken voor elke technologie, of bestaat er een efficiëntere methode voor. Iemand enig idee?

Alvast bedankt :)

Tyfius

Legacy Member
Daarvoor heeft men onder andere het Abstract Factory Design Pattern uitgevonden.

Je gaat verschillende factories maken die van een bepaalde databron je data gaan omzetten in je klasse.

Code:
// Pseudo, to get the idea

public class MyObject {}

public abstract DataSource {
  public abstract MyObject loadObject();
}

public class XmlDataSource : DataSource {
  public MyObject loadObject() {
     // perform xml loading
  }
}

public class JsonDataSource : DataSource {
  public MyObject loadObject() {
    // perform json loading
  }
}

public class Loader {
  private DataSource m_dataSource;

  public void Load() {
    switch (m_settings.datasource) {
      case DataSourceEnum.XML:
        m_dataSource = new XmlDataSource();
        break;
      case DataSourceEnum.JSON:
        m_dataSource = new JsonDataSource();
        break;
    }

    m_myObject = m_dataSource.loadObject();
  }
}

Forum

Legacy Member
Mooi design pattern :) merci voor het duidelijke antwoord. Het worden dus voor alle klassen die opgeslagen kunnen worden afzonderlijke klassen maken.

Parnakra

Legacy Member
Eerder voor alle klassen die opgeslagen/opgehaald kunnen worden één methode in je DataSource-klasse.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan