Sto scrivendo un codice che odora davvero ma non riesco a capire esattamente perché.
Ho documenti che esistono in più lingue. Voglio essere in grado di servire un documento nella sua lingua richiesta ed essere in grado di passare ad altre lingue quando richiesto. Sul mio database i documenti sono voci separate con identificatori identici ( doc_id
- che non è un valore univoco). Ad esempio:
tb_documents
id | doc_id | language | other stuff...
---------------------------------------
1 | 10268 | eng |
2 | 11352 | eng |
3 | 11352 | jpn |
4 | 11352 | ger |
Quando costruisco il mio oggetto documento sto prendendo un doc_id
e un language
e costruendo il mio oggetto in base alla voce del database pertinente. Un problema che posso vedere qui è che in futuro potremmo avere altre modulazioni dell'oggetto document
. Forse vorremmo un abridged
o forse iniziare a conservare versioni precedenti dello stesso documento. Non voglio accoppiare la creazione del mio oggetto con tutte queste variabili, e mi sento come se creare nuove sottoclassi diventasse fangoso, come vorrei combinare i tipi - ad esempio una vecchia versione di un documento tradotto in forma abbreviata.
Credo che questo sia il tipo di problema che potrebbe essere risolto con un modello elegante, ma mi manca l'esperienza per sceglierne uno. Qualche suggerimento?