Domanda

Ho alcune istanze di oggetti di misura da una serie di prove memorizzate in un oggetto di raccolta di prova. Ho anche una logica che può confrontare due istanze di oggetti risultati del test e mi dica se sono "abbastanza vicino".

Dove va questa logica essere collocato?

  1. l'oggetto come un metodo? Come: instance.approximately_equal(other)
  2. Nella classe dell'oggetto come metodo di classe / static? class.approximately_equal(a,b)
  3. l'oggetto insieme come un metodo? collection.approximately_equal(a,b)

Qual è la progettazione OO corretto per questo?

(chiedo, dato che, sebbene # 1 sembrerebbe la soluzione corretta, che non avevo mai chiedere se qualcuno istanza è approximately_equal a un'istanza diversa. Solo se "qualche gruppo di oggetti" sono uguali tra loro. Ha ottenuto fatto pensare ...)

Grazie

È stato utile?

Soluzione

I libri di design object oriented che ho letto suggeriscono mettendo funzionalità di classe cross in servizio oggetti provider. Ciò dissociare i due oggetti e ridurre la complessità, ma può essere eccessivo se il progetto è piccolo.

Altri suggerimenti

I userebbe l'opzione 1 (metodo di istanza) dal momento che vi permette di affinare la logica di confronto nelle classi derivate (se necessario).

ho trovato # 3 è il meno invadente e porta a codice meno gonfio, perché tende a costringerti a fare quei metodi come flessibile / riutilizzabili possibile. Ad esempio, in C ++, si sarebbe potenzialmente basta usare l'overloading degli operatori di gestirlo; se si dispone di una classe di utilità (o, se si ha intenzione di estendere un tipo di dati nativo), l'effetto netto è lo stesso, solo con una diversa presentazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top