Middle — Middle+
შეგიძლიათ ახსნათ State-ის ნაგულისხმევი განხორციელება და როგორ მართავს ის ობიექტის მდგომარეობას?
sobes.tech AI
პასუხი AI-სგან
State ნიმუში საშუალებას აძლევს ობიექტს შეცვალოს თავისი ქცევა მისი შიდა მდგომარეობის მიხედვით, ამ დროს შეცვალოს მდგომარეობის კლასი შესრულების დროს.
შიდა განხორციელება ჩვეულებრივ ეფუძნება შემდეგ პრინციპებს:
- არსებობს კონტექსტი (Context), რომელიც შეიცავს ბმულს მიმდინარე მდგომარეობის ობიექტზე (State).
- State ინტერფეისი განსაზღვრავს მეთოდების ნაკრებს, რომლებიც განახორციელებს სხვადასხვა მდგომარეობებს.
- თითოეული კონკრეტული მდგომარეობა ამ ინტერფეისს ახორციელებს და განსაზღვრავს ამ მდგომარეობისთვის ქცევას.
- კონტექსტი გადაეცემა მეთოდების გამოძახებებს მიმდინარე მდგომარეობას.
- საჭიროების შემთხვევაში, მდგომარეობა შეიძლება თვითონვე შეიცვალოს, შეცვლის ბმულს კონტექსტში სხვა მდგომარეობის ობიექტზე.
Swift (iOS) მაგალითი:
protocol State {
func handle(context: Context)
}
class Context {
private var state: State
init(state: State) {
self.state = state
}
func request() {
state.handle(context: self)
}
func changeState(to newState: State) {
self.state = newState
}
}
class ConcreteStateA: State {
func handle(context: Context) {
print("სტატუსი A მართავს მოთხოვნას")
context.changeState(to: ConcreteStateB())
}
}
class ConcreteStateB: State {
func handle(context: Context) {
print("სტატუსი B მართავს მოთხოვნას")
context.changeState(to: ConcreteStateA())
}
}
// გამოყენება:
let context = Context(state: ConcreteStateA())
context.request() // სტატუსი A მართავს მოთხოვნას
context.request() // სტატუსი B მართავს მოთხოვნას
ამ გზით, ობიექტი დინამიურად იცვლის თავის ქცევას, უბრალოდ გადართვით მისი შიდა მდგომარეობა.