Sobes.tech
Junior — Middle

Kādas funkcijas veic konteksts stāvokļa vai komandas modelī?

sobes.tech AI

Atbilde no AI

Modelos 'Stāvoklis' (State) un 'Komanda' (Command) gadījumos, konteksts darbojas kā vadības objekts, kas saglabā pašreizējo stāvokli vai komandu un ar tiem sadarbojas.

Stāvokļa modeļa piemērs:

  • Kontekstā ir atsauce uz stāvokļa objektu, kas definē pašreizējo uzvedību.
  • Tas deleģē metožu izsaukumus uz stāvokli, ļaujot dinamiski mainīt uzvedību, mainot stāvokli.
  • Tas ietver pārslēgšanās loģiku starp stāvokļiem.

Komandas modeļa piemērs:

  • Kontekstā var saglabāt un izsaukt komandu objektus.
  • Tas pārvalda rindu vai vēsturi (piem., atsaukšana/atkārtošana).
  • Tas atdala sūtītāju no tā izpildes.

Piemērs Go valodā, izmantojot 'Stāvokļa' modeli:

// State interfeiss
type State interface {
    Handle(c *Context)
}

// Konteksts saglabā pašreizējo stāvokli
type Context struct {
    state State
}

func (c *Context) SetState(s State) {
    c.state = s
}

func (c *Context) Request() {
    c.state.Handle(c)
}

// Konkrēts stāvoklis A
type ConcreteStateA struct{}
func (s *ConcreteStateA) Handle(c *Context) {
    fmt.Println("Stāvoklis A apstrādā pieprasījumu")
    c.SetState(&ConcreteStateB{})
}

// Konkrēts stāvoklis B
type ConcreteStateB struct{}
func (s *ConcreteStateB) Handle(c *Context) {
    fmt.Println("Stāvoklis B apstrādā pieprasījumu")
    c.SetState(&ConcreteStateA{})
}

Konteksts pārvalda stāvokļus un deleģē izsaukumus, nodrošinot uzvedības elastību.