Sobes.tech
Junior — Middle

State паттернин концепциясын жана ал объектке багытталган программалоодо кандай колдонулушу мүмкүн экенин түшүндүрө аласызбы?

sobes.tech AI

AIден жооп

State үлгісі объектке ішкі күйіне байланысты өз мінез-құлқын өзгертуге мүмкіндік береді және бұл күй класы орындалу кезінде өзгереді. Бұл үлкен шарт операторларын болдырмауға көмектеседі және кодты икемді әрі кеңейтілген етеді.

Объект-бағытталған программалауда, State үлгісін жүзеге асыру үшін негізгі күй интерфейсі жана бир нече конкреттүү абал класстары түзүлөт. Контекст (негизги объект) учурдагы абалга шилтеме сактайт жана чакырууларды ага өткөрүп берет.

Мисал Javaда:

interface State {
    void handle(Context context);
}

class ConcreteStateA implements State {
    public void handle(Context context) {
        System.out.println("Кийинчелик A өтүнүчтү иштетет.");
        context.setState(new ConcreteStateB());
    }
}

class ConcreteStateB implements State {
    public void handle(Context context) {
        System.out.println("Кийинчелик B өтүнүчтү иштетет.");
        context.setState(new ConcreteStateA());
    }
}

class Context {
    private State state;

    public Context(State state) {
        this.state = state;
    }

    public void setState(State state) {
        this.state = state;
    }

    public void request() {
        state.handle(this);
    }
}

// Колдонуучу:
Context context = new Context(new ConcreteStateA());
context.request(); // Кийинчелик A өтүнүчтү иштетет.
context.request(); // Кийинчелик B өтүнүчтү иштетет.

Ошентип, объекттин жүрүм-туруму динамикалык түрдө өзгөрөт абал алмашуу менен.