Suoritan tällä hetkellä php ohjelmoinnin jatkokurssia. Nyt pitäisi toteuttaa state mallilla jokin yksinkertainen esimerkkikoodi, enkä tiedä yhtään mistä aloittaa. Luin muutamia ohjeita verkossa, mutta ei vieläkään oikein auvennut, help!
Moin Frille! Alla minimalistinen valokatkaisija state - esimerkki!
<?php class Katkaisija { private $on, $off, $tila; public function __construct() { $this->on = new On($this); $this->off = new Off($this); $this->asetaTila($this->off); // Asetetaan oletus tila } public function asetaTila(TilaInterface $tila) { $this->tila = $tila; } public function on() { $this->tila->on(); } public function off() { $this->tila->off(); } public function haeOn() { return $this->on; } public function haeOff() { return $this->off; } } interface TilaInterface { public function on(); public function off(); } abstract class Tila implements TilaInterface { protected $katkaisija; final public function __construct(Katkaisija $katkaisija) { $this->katkaisija = $katkaisija; } public function on() {} public function off() {} } class On extends Tila { public function off() { print 'OFF'; $this->katkaisija->asetaTila($this->katkaisija->haeOff()); } } class Off extends Tila { public function on() { print 'ON'; $this->katkaisija->asetaTila($this->katkaisija->haeOn()); } } $katkaisija = new Katkaisija(); $katkaisija->off(); // NEIN! $katkaisija->on(); // ON $katkaisija->on(); // NEIN! $katkaisija->off(); // OFF $katkaisija->on(); // ON $katkaisija->off(); // OFF $katkaisija->off(); // NEIN! $katkaisija->off(); // NEIN! $katkaisija->on(); // ON
Aihe on jo aika vanha, joten et voi enää vastata siihen.