Sto correndo nell'esatto problema Robert Martin menzionato quando ho una classe chiamata Manager
, la mia ha troppa (ridondante).
Sto scrivendo un sistema che esegue calcoli su molti buffer contenenti dati che formano una sorgente con data e ora.
- I buffer memorizzano diversi tipi di dati, sono classi template.
- Quando arriva una nuova Osservazione, una
BufferManager
distribuisce ed elabora i campi dell'Osservazione ai diversi Buffer. - Un'operazione utente comune è quella di accedere a un intervallo di tempo di un determinato buffer.
Ho un BufferID
emum di nomi in BufferManager
, uno per ogni Buffer
e poi ho dizionari (std :: map) in BufferManager
, uno per ogni tipo di Buffer.
L'utente ottiene quindi l'intervallo desiderato di un buffer chiamando:
Type1Interval int1 = BufferManager.getType1BufferInterval(BufferID, starTime, endTime)
...
TypeNInterval intN = BufferManager.getTypeNBufferInterval(BufferID, starTime, endTime)
dove l'unica differenza tra due di tali funzioni è che getTypeJBufferInterval accede al dizionario contenente i buffer di tipo J.
Come posso, dato un BufferID
e un intervallo di tempo, restituire il Buffer corrispondente (valori) senza dover avere tutte queste diverse funzioni?