Pattern per la modulazione di un oggetto basato su una variabile

2

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?

    
posta Abraham Brookes 16.04.2018 - 06:43
fonte

2 risposte

0

Potresti voler prendere un bottino nel modello Builder .

link o link

La mia unica preoccupazione è che ora la costruzione dei tuoi oggetti è piuttosto semplice e questo può dimostrarsi eccessivo, ma se ti aspetti un aumento della complessità, potrebbe valere la pena investire nel modello.

    
risposta data 16.04.2018 - 17:56
fonte
1

Hai già un modello elegante. id rispetto a doc_id . Il doc_id identifica quei documenti con un'origine comune. Puoi creare tanti ID con lo stesso doc_id che desideri.

L'aggiunta di modulazioni come abridged comporterà la determinazione e l'impostazione di valori abbreviati per tutti i documenti esistenti prima di aggiungere nuovi documenti.

    
risposta data 16.04.2018 - 11:37
fonte

Leggi altre domande sui tag