Ho una lunga esperienza nel mondo procedurale e sto programmando / mantenendo il codice OO anche in varie lingue. Ora entra nel design OO e senti i dolori di identificare gli oggetti da zero. Ho letto diversi libri, articoli, ecc. Su OO. Spesso si fermano con gli esempi Person, Employee. Identificarlo e farlo nel modo giusto in un progetto del mondo reale solleva diverse domande.
Questa è una sorta di domanda di follow-up dalla mia precedente recensione di design domanda . Dì, ho un oggetto come sotto:
public class AddressRecord {
protected long RecordID;
protected String AddressLine1;
protected String AddressLine2;
protected String City;
protected String State;
protected String PostalCode;
protected String Country;
protected String FirstName;
protected String LastName;
protected String FullName;
protected String PhoneNumber;
protected String EmailAddress;
protected String CompanyName;
..
/* related to my question below */
public String extractXml() {}
public HashMap extractHash() {}
public String extractJson() {}
...
}
Ora voglio estrarre il campo / i valori in una tabella hash o XML (formato proprietario) o JSON senza ricorrere a librerie come JAXB. Scriverò alcuni metodi (ad esempio, extractXml, extrachHash, extractJson) per estrarre campi specifici nel formato di destinazione.
La mia domanda è dove dovrebbero essere questi metodi di estrazione / conversione? Sulla base di una certa esposizione ai libri e ai consigli di progettazione OO, supponevo che potessi avere questi metodi proprio all'interno di questa classe.
@Vladislav ha detto che dovrebbero essere fuori, come nel controller. In qualche modo capisco, ma sono curioso di sapere perché? Inoltre, se voglio isolare questa logica di estrazione dal codice del controller, posso creare una classe facendo proprio questo? Mi piace,
public class AddressRecordXml {
public static String extractXml(AddressRecord rec)
{
}
...
}
e quindi usarlo nel controller come,
...
AddressRecord rec = new AddressRecord();
String xmlStr = AddressRecordXml(rec);
...
String resp = transport.process(xmlStr);
...
Nota: so che esistono librerie come JAXB ecc. per aiutare a serializzare oggetti in XML, ecc. Non posso ancora usarli. Sto lavorando con Java 1.4 all'interno di un vecchio Sybase EAServer (il linguaggio di programmazione principale è PowerBuilder) e pone molte restrizioni. Lo stesso motivo per HashMap, no Generics ecc.