Junior — Middle
Milyen tervezési mintát alkalmaznál, hogy az objektum viselkedését az időtől függően módosítsd?
sobes.tech MI
Válasz az MI-től
A nap időpontjától függően az objektum viselkedésének alkalmazására a "Stratégia" tervezési minta nagyon alkalmas.
Az ötlet az, hogy van egy közös viselkedési interfész, és a konkrét megvalósítások (stratégiák) a nap különböző időszakaira változnak — például reggeli, déli és esti stratégiák.
Java példával:
interface Behavior {
void execute();
}
class MorningBehavior implements Behavior {
public void execute() {
System.out.println("Jó reggelt!");
}
}
class EveningBehavior implements Behavior {
public void execute() {
System.out.println("Jó estét!");
}
}
class Context {
private Behavior behavior;
public void setBehavior(Behavior behavior) {
this.behavior = behavior;
}
public void performBehavior() {
behavior.execute();
}
}
// Használat:
Context context = new Context();
LocalTime now = LocalTime.now();
if (now.isBefore(LocalTime.NOON)) {
context.setBehavior(new MorningBehavior());
} else {
context.setBehavior(new EveningBehavior());
}
context.performBehavior();
Ez a megközelítés lehetővé teszi az objektum viselkedésének könnyű változtatását anélkül, hogy a kódját módosítaná.