Non sapevo esattamente come chiamare queste situazioni, quindi lo illustrerò.
Se ho qualcosa di simile in un metodo:
if (i <= 5)
doSomething();
else
doSomethingElse();
ma so che i
non sarà mai inferiore o uguale a 5 una volta che supera 5, non è più necessario continuare a controllare l'if-statement una volta che si è staccato la prima volta.
È una buona idea implementare un modello di strategia in questo caso, per evitare controlli ridondanti?
class strategy1 implements strategy {
Object obj; // stores a reference to the object that uses it
void run() {
if (i <= 5)
doSomething();
else {
obj.strategy = new strategy2(obj);
obj.strategy.run();
}
}
}
class strategy2 implements strategy {
void run() {
doSomethingElse();
}
}
e l'oggetto chiama semplicemente strategy.run()
Credo che questo sacrifichi una certa leggibilità e semplicità per le prestazioni, ma rende anche chiaro che i
non scenderà al di sotto di 6 una volta che avrà raggiunto 6, il che fornisce alcune informazioni in più rispetto alla sola istruzione if. C'è un modo migliore?