antomau96 ha scritto:
Vediamo se ho capito bene, io fare cosi':
metodo per la ricerca (param valoreDaCaercare)
scandisco la lista e prendo una stanza
chiamo il filtro
filtro di ricerca (param1 stanza, param2 valoreDaCaercare)
if (stanza.getPrice()<=50) return true
****
se il metodo ha restituito true aggiungo la stanza all'arrayList...
Ipotizzando uno scenario di ESEMPIO come ho detto prima: CollezioneAlberghi ha un
List<Albergo> alberghi e un Albergo ha un List<Stanza>
Il metodo trovaStanze, fatto
senza considerare altro (es. ordinamenti, raggruppamenti ..) potrebbe essere:
public List<Stanza> trovaStanze(FiltroStanza filtroStanza) {
List<Stanza> stanzeTrovate = new ArrayList<>();
for (Albergo albergo : alberghi) {
for (Stanza stanza : albergo.getStanze()) {
if (filtroStanza.accettaStanza(stanza)) {
stanzeTrovate.add(stanza);
}
}
}
return stanzeTrovate;
}
antomau96 ha scritto:
Primo problema> vengono fuori tutte le stanze mischiate e io invece voglio che vengano separate per alberghi??
Allora devi solo fare "qualcosa" che modella un gruppo di stanze (che NON è un Albergo, essendo potenzialmente un sotto-insieme). Quindi una lista di gruppi di stanze, alla fine.
Una classe es. GruppoStanze che contiene un List<Stanza> con eventualmente un riferimento al Albergo (se già non c'è l'ha ciascuna Stanza).
E quindi il trovaStanze darà un List<GruppoStanze>
antomau96 ha scritto:
Ricerca generale:
Vorrei realizzare una cosa un pò più professionale e avrei pensato anche ad una soluzione ma vorrei un parere:
Voglio fare in modo che si possano cercare più cose contemporaneamente ma dovrei impostare più filtri...
es.: passo l'oggetto al filtro tv, al filtro internet e al filtro frigo... se tutti restituiscono true l'oggetto può essere inserito nell'array list...
ma come faccio a dire al metodo per la ricerca di andare ad interpellare gli specifici filtri....?
Vuol solo dire una implementazione un po' più complessa di FiltroStanza ma non cambia nulla per il resto.
E' anche possibile fare più implementazioni "fini" dei filtri, ciascuno che considera solo un piccolo aspetto e poi anche un'altra implementazione che dati N filtri, considera la stanza come accettata solo se tutti i sotto-filtri la accettano.
Il Composite design pattern ti dice nulla ... ?
antomau96 ha scritto:
io avrei pensato delle combo box
A livello "grafico", cosa offri per i filtri è un ALTRO DISCORSO. Non conta ora.
antomau96 ha scritto:
ottenendo direttamente dal metodo la soluzione al problema... è fattibile oppure conviene sempre utilizzare un interfaccia per la ricerca?
La interfaccia di astrazione, se non l'hai capito, serve per SEPARARE due concetti ben diversi:
- COME ricercare le stanze, conoscendo la struttura dati
e
- COME stabilire se considerare una stanza oppure no (questo è il criterio del filtro)