Qual è il modo migliore per comporre un oggetto con componenti attraverso due assiemi?

1

Nel mio progetto, ho una collezione di classi. Queste classi contengono per lo più dati che vengono aggiornati di rado o per niente - cioè non fanno molto do - il loro scopo è quello di passare intorno a oggetti di consumo che fanno cose, separando i dati dalla funzionalità.

Vorrei continuare questo modello, consentendo all'utente di trattarli come tali, cioè possono essere serializzati / deserializzati senza codice speciale, possono essere facilmente usati per comporre classi più grandi, sottoclassi, ecc.

Il problema è che, come molte cose di controllo come la GPU, non sono affatto realmente disaccoppiati o apolidi, perché per ognuno di essi c'è un intero carico di risorse che devono essere create e smaltito durante la vita dell'applicazione - ma l'utente non deve preoccuparsi di questo.

Mi piacerebbe conoscere il modo preferito per allegare tutte le informazioni all'oggetto semplice in un modo che sia sicuro, mantiene l'illusione dell'apolidia, ma è anche chiaro a chiunque stia guardando il codice cosa sta succedendo (anche , gli oggetti sono definiti in diversi gruppi).

Q.PerchénonbastainserireAinBepassareattornoall'oggettoB?
R.Poichél'utentecreal'oggettoAefunzionasoloconl'oggettoAenondovrebbenecessariamenteconoscerel'oggettoBesistente.

Q.Perchénonutilizzarelefabbricheecrearel'oggettoC?
R.Perchél'AssemblyAnonpuòcontenereclassicompostedauninterocaricodioggettiObject-A-like(perchélafactoryverràdefinitanell'assemblyBinmodochenonpossanoessereistanziate).

Q.Quindicomevienecreatol'oggettoB?
A.L'oggettoBvienecreatoepopolatosurichiesta,quandol'oggettoAvienepassatoaunmetodochenehabisogno.

Nota-Sochequestoproblemanonè"difficile" e ci sono molti modi per farlo (al momento ho un membro astratto aggiunto a tutti quelli che sono inseriti nel consumatore e funziona OK), I vuoi solo alcune nuove idee / opinioni su ciò che è il modo migliore - cosa ti piacerebbe vedere se hai ereditato il codice?

    
posta sebf 26.11.2012 - 20:46
fonte

1 risposta

1

Composizione semplice.

Hai NeatObject e HardwareResources essere composto all'interno di BuiltNeatObject o qualcosa del genere. Una parte proviene da risorse serializzate, l'altra viene generata in fase di esecuzione dal consumatore e vivono insieme (idealmente in stato di sola lettura / immutabile), anche se vengono consumate in modo indipendente.

Una Factory potrebbe essere utile per nascondere "come" le due parti sono aggregate, ma in futuro potrebbe limitare la flessibilità. Ti lascio questo perché sai che il problema è il migliore.

    
risposta data 26.11.2012 - 21:52
fonte

Leggi altre domande sui tag