Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ State-ის ნიმუშის კონცეფცია და როგორ გამოიყენება იგი ობიექტზე ორიენტირებულ პროგრამირებაში?

sobes.tech AI

პასუხი AI-სგან

სტეიტის ნიმუში საშუალებას აძლევს ობიექტს შეცვალოს თავისი ქცევა შინაგან მდგომარეობაზე დაყრდნობით, ამ დროს შეცვლის მდგომარეობის კლასი შესრულების დროს. ეს ეხმარება თავიდან აიცილოს დიდი პირობითი ოპერატორები და კოდი უფრო მოქნილს და გაფართოებადს ხდის.

ობიექტ-კენძული პროგრამირებაში, სტეიტის ნიმუშის განხორციელებისთვის შექმნილია ძირითადი მდგომარეობის ინტერფეისი და რამდენიმე კონკრეტული მდგომარეობის კლასი. კონტექსტი (ძირითადი ობიექტი) ინახავს მიმდინარე მდგომარეობის მითითებას და გადასცემს მას.

მაგალითი 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 მართავს მოთხოვნას.

ამ გზით, ობიექტის ქცევა დინამიკურად იცვლება მდგომარეობის ცვლილებისას.