Qual è il modo migliore di manipolare l'ordine mentre le cose vengono eseguite in base ad alcune condizioni (oltre a scriverle di nuovo con il diverso ordine)?Variare l'ordine del metodo di chiamata per diverse istanze di una classe
Diciamo che c'è una classe Persona e ogni oggetto di Persona rappresenta un diverso umano.
class Person{
int eatingPriority = 3;
int sleepingPriority = 2;
int recreationPriority = 1;
void eat() {/*eats*/}
void sleep() {/*sleeps*/}
void watchTv() {/*watches tv*/}
void satisfyNeeds() {
//HOW TO DO THIS
}
}
Come posso fare i metodi satisfyNeeds()
chiamano gli altri tre metodi in base alla loro priorità?
Nota: desidero chiarire che le priorità possono cambiare da Persona a Persona.
Il metodo più semplice è quello di creare una classe astratta con 2 metodi: getPriority() 'e' 'run()'. Quindi creare un insance per ogni attività. Infine, puoi mettere le istanze di quelle attività in una lista e ordinarle per priorità. –
@ArnaudDenoyelle o utilizzare un 'PriorityQueue' – SpaceTrucker
Mi è stato chiesto lo scopo del programma. Stiamo cercando di trovare il modo più pulito di manipolare il flusso del programma. In questo esempio, supponiamo che stiamo creando un'IA per un gioco che ha simulato le persone in esso. Se sei affamato e stanco dormi o mangi prima? Se la tua priorità per dormire è più alta, prima dormi, altrimenti mangi prima di dormire. Inoltre è possibile modificare le priorità al volo. Possiamo misurare il sonno e le esigenze alimentari e impostare una priorità basata su questo. Si noti che il codice nella domanda è una versione semplificata per dimostrare il problema. – WVrock