상태 모드--당신이 편안하면 맑은 날
한 대상의 행위가 그 상태에 달려 있고 운행할 때 시간 상태에 따라 그 행위를 바꿔야 할 때 우리는 상태 모델로 실현하여 대량의 switch 지점 판단을 없앨 수 있다.
우선, 이 행위를 정의하는 것은 상태의 대상에 달려 있다. 여기는 날씨를 대상으로 날씨가 당신이 좋아하는 그녀의 상태의 영향을 받아 변화하는 것을 보여준다.
class weather{
//
public $you;
//
public $state;
//
public function __construct($e,$s)
{
$this->you=$e;
$this->state=$s;
}
//
public function setState(state $s){
$this->state=$s;
}
//
public function setEnvironment($t){
$this->you=$t;
}
//
public function motion(){
$this->state->yourstate($this);
}
}
, :
abstract class state{
abstract function yourState(weather $weacher);
}
그런 다음 특정 상태를 정의합니다.
class state1 extends state {
function yourState(weather $weather)
{
//
if(' ' == $weather->you){
echo " ";
}else{
// flower , motion
$weather->setState(new state2());
$weather->motion();
}
}
}
class state2 extends state {
function yourState(weather $weather)
{
if(' '==$weather->you){
echo "
";
}else{
$weather->setState(new state1());
$weather->motion();
}
}
}
지금까지 우리가 정의한 것을 살펴보자. weather: 행위는 상태에 달려 있는 클래스state: 추상적인 상태 클래스state1,state2: 구체적인 클래스가 완성되면 다음 클라이언트에서 상태 모드를 사용할 수 있다.
// ' ' ' ' , state1
$obj=new weather(' ',new state1());
// ,
$obj->motion();
//
$obj->you=' ';
// , , ,
$obj->motion();
총괄적으로 보면 우리가 새로운 상태를 추가해야 할 때 새로운 구체적인 상태류만 정의하면 된다는 것을 알 수 있다.swtich 지점을 이용하여 환경 요소에 대해 판단하고 서로 다른 행위를 선택하는 것에 비해 상태 모델은 개방 폐쇄 원칙을 잘 구현했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.