Bloccato sul design quando si tenta di creare un archivio oggetti

1

Sto lavorando a un progetto API su piccola scala ma poiché verrà utilizzato e gestito da persone che non sono sviluppatori software commerciali sto cercando di mantenere il design il più possibile distinto e identificabile, l'uso di SOLID lo ha reso più semplice .

Ma alcuni dei miei oggetti richiedono di cambiare (diciamo resi "attivi") che a loro volta dovrebbero rendere ora disabilitato l'altro oggetto che era "attivo". Questa è semplicemente una proprietà dell'oggetto. Ciò richiede che conosca ancora tutti gli oggetti anche dopo che sono stati restituiti all'utente.

Quindi ho pensato che posso usare un "Object Store" che memorizzerà l'oggetto creato prima che sia effettivamente restituito all'utente del sistema, ma non sono sicuro dove nel mio modello di creazione di oggetti questo si siede. Ho aggiunto un'immagine qui sotto che mostra come vengono creati gli oggetti all'interno della mia soluzione.

Quindiall'internodellamiasoluzioneilcontrollerottieneleproprietànecessariepercostruireunoggetto(questopuòincluderel'interfacciaesternamente,mahopersoquestoschema).Ciòpassagliargomentiallafactorychequindicreaeffettivamentel'oggetto.

Quindistavopensandodiaggiungerealmio"object store" nel controller dopo che ha richiesto alla fabbrica di costruire l'oggetto, ma il problema con questo è che allora significa che il controller sarà responsabile, ottenendo il necessario argomenti e che memorizzano gli oggetti creati.

Stavo anche pensando che potesse essere collocato tra il controller e la factory in modo che il controller dicesse "GetObject" sull'archivio oggetti e questo potrebbe salvarlo internamente ma questo significa che l'object store non solo memorizza oggetti che richiederà anche che vengano creati.

C'è qualche indicazione su dove questo potrebbe sedersi e perché? Forse il mio modello per la creazione di oggetti non è corretto (sembra che fino ad ora fosse stato OK)?

Specifiche quindi quello che sto facendo è un adattatore che si trova sull'interfaccia ActiveX del software di terze parti che utilizza la mia azienda. Questo verrà utilizzato come API da altri "ingegneri" all'interno dell'azienda per l'automazione delle attività eseguite dal software di terze parti. Come oggetto "X" nel mio esempio restituisce una collezione di "Y" Sto cercando un metodo per cambiare una proprietà sugli altri Y quando uno cambia, come un flag "attivo", uno è reso attivo l'attuale attivo è dis-attivato. Non so quanto possa essere più specifico senza dire esattamente cosa sia o faccia l'applicazione.

    
posta Stephen Ross 01.10.2015 - 10:15
fonte

1 risposta

1

In Casi in cui si ha una proprietà su un oggetto che dipende da altri oggetti in un gruppo. A volte può essere una buona idea spostare questo per essere una proprietà del gruppo, piuttosto che una proprietà di ciascun oggetto.

es

diciamo che abbiamo un sistema di e-commerce in cui i clienti hanno account con più carte di credito. Tuttavia, è attiva una sola carta di credito alla volta.

invece di:

CreditCard.IsActive

Potremmo invece avere

Account.ActiveCardId

Ciò imporrà la natura "attiva alla volta" di Active e consentirà di utilizzare ciascuna CreditCard come oggetto dati invariante.

    
risposta data 01.10.2015 - 13:00
fonte