Ho difficoltà a provare a progettare una struttura di classe per alcune funzionalità di ricerca. È abbastanza probabile che mi stia avvicinando completamente a questo in modo errato, ma mettendo da parte questo sono curioso di come le altre persone si avvicinerebbero ad una situazione come segue:
Abbiamo bisogno di funzionalità di ricerca che consentano agli utenti di accedere alle informazioni sui pacchi:
- Le persone saranno in grado di cercare tramite 3 diversi metodi di ricerca: MethodA, MethodB, MethodC.
(Per dare un po 'di prospettiva su cosa intendo per "metodo", pensiamo a queste cose come ad una ricerca a una riga che farà un parsing intelligente, un altro metodo ha campi modulo specifici per inserire ogni parametro, ecc.) - Le persone saranno in grado di cercare tramite 3 diversi tipi di ricerca: TypeA, TypeB, TypeC. (Ad esempio, ricerca per proprietario, ricerca per indirizzo pacco, ecc.)
La situazione non è terribilmente complessa, ma ciò su cui sono bloccato è se dovrei progettare le mie classi attorno a un oggetto metodo astratto o un oggetto di tipo astratto. In sostanza, dovrei fare questo:
public class ConcreteMethodA : BaseMethod
{
public ReturnDataType GetResultsTypeA(){};
public ReturnDataType GetResultsTypeB(){};
//Etc.
}
O questo:
public class ConcreteTypeA : BaseType
{
public ReturnDataType GetResultsMethodA(){};
public ReturnDataType GetResultsMethodB(){};
//Etc.
}
Se hai qualche consiglio su come risolvere il mio scenario specifico, certamente lo apprezzerò. Tuttavia, sono più interessato a euristica per affrontare un problema di progettazione di questa natura.