Sobes.tech
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á.