状态模式
2017-08-09 本文已影响21人
零一间
<?php
/*
状态模式:
允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。
模式分析:
在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。
*/
header ( "Content-Type:text/html;charset=utf-8" );
abstract class State{
abstract function recommend();
}
//低等收入
class LowerIncome extends State{
function recommend(){
echo '低等收入: 要努力工作,解决温饱问题!<br>';
}
}
//中等收入
class MediumIncome extends State{
function recommend(){
echo '中等收入: 你可以丰富一些业余生活,KTV,健身,下馆子!<br>';
}
}
//高等收入
class HigherIncome extends State{
function recommend(){
echo '高等收入:买房,买车,理财投资,想干啥干啥,谁让你牛逼呢!<br>';
}
}
class Analysis{
public static function getResult($status){
switch($status){
case 'L':
return new LowerIncome();
case 'M':
return new MediumIncome();
case 'H':
return new HigherIncome();
}
}
}
Analysis::getResult('L')->recommend();
Analysis::getResult('M')->recommend();
Analysis::getResult('H')->recommend();