状态模式

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();
上一篇下一篇

猜你喜欢

热点阅读