Se un'entità è composta, è ancora un oggetto divino?

3

Sto lavorando su un sistema per configurare l'hardware. Sfortunatamente, ci sono tonnellate di varietà nell'hardware, il che significa che c'è una vasta gamma di funzionalità e configurazioni a seconda di quale hardware specifico a cui il software si connette.

Per far fronte a questo, stiamo usando un progetto di Entità Componente in cui la classe "hardware" è di per sé un contenitore molto sottile per componenti che sono composti in fase di esecuzione in base a quali funzionalità / configurazione sono disponibili. Funziona alla grande, e il design stesso ha funzionato bene altrove (in particolare nei giochi).

Il problema è che tutti questo software fa è configurare l'hardware. In quanto tale, quasi tutti del codice è un componente dell'istanza dell'hardware. Mentre il consumatore lavora sempre contro le interfacce strongmente tipizzate per i componenti, si potrebbe sostenere che la classe che rappresenta un'istanza dell'hardware è un oggetto divino.

Se vuoi fare qualcosa con / con l'hardware, puoi interrogare un'interfaccia e lavorarci.

Quindi, anche se i componenti di un oggetto sono modulari e disaccoppiati bene, il loro contenitore è un oggetto di Dio e gli svantaggi associati all'anti-pattern?

    
posta Telastyn 30.10.2013 - 02:20
fonte

2 risposte

11

Secondo la God Object voce di Wikipedia, "Un oggetto di dio è l'analogo orientato agli oggetti di non riuscire a usare le subroutine in linguaggi di programmazione procedurale o di usare troppe variabili globali per memorizzare informazioni di stato. " In altre parole, è un pasticcio strettamente accoppiato che è stato avvolto in un oggetto.

Secondo te, la classe hardware è "è un contenitore molto sottile per componenti". Non credo che ci sia un modo per un contenitore molto sottile di essere un disordine strettamente accoppiato, a meno che non sia strettamente accoppiato ai componenti che contiene. Si descrivono i componenti come "composti in fase di esecuzione in base a quali funzionalità / configurazione sono disponibili", il che implica che vi siano più possibili componenti che potrebbero inserirsi in uno slot nel contenitore, quindi il contenitore deve essere disaccoppiato dai suoi componenti.

Quindi, a meno che non abbia frainteso la tua descrizione, la tua classe hardware non è un God Object. Potrebbe essere molto grande in fase di esecuzione, ma non riesco a vedere quanto essere grandi in fase di esecuzione possa essere un problema, a patto che sia i singoli pezzi sia i modi di metterli insieme non siano problemi strettamente collegati.

    
risposta data 30.10.2013 - 04:51
fonte
4

Dove vivono la logica e complessità ? Se l'istanza Hardware più esterna è principalmente una facciata o un adattatore, mentre i componenti secondari hanno la maggior parte della logica e del comportamento, allora direi "No".

Potrebbero esserci altre critiche su cui potresti livellarlo, ma per me un "Oggetto di Dio" è più spesso una classe con "troppe" linee di codice che fanno "troppi" diversi tipi di cose.

    
risposta data 30.10.2013 - 02:49
fonte

Leggi altre domande sui tag