• 状态模式


      状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

      在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。
      类结构图:
    状态模式结构图
    php代码示例:
    <?php
    class State{
        function WriteProgram(){
        }
    }
    
    class Work{
        public $hour,$current;
        function __construct(){
            $this -> hour = 9;
            $this -> current = new ForenoonState();
        }
        function SetState($temp){
            $this -> current = $temp;
        }
        function WriteProgram(){
            $this -> current -> WriteProgram($this);
        }
    }
    
    class NoonState extends State{
        function WriteProgram($w){
            print "noon working
    ";
            if($w -> hour < 13){
                print "fun.
    ";
            }else{
                print "need to rest
    ";
            }
        }
    }
    
    class ForenoonState extends State{
        function WriteProgram($w){
            if($w -> hour < 12){
                print "morning working
    ";
            }else{
                $w -> SetState(new NoonState());
                $w -> WriteProgram();
            }
        }
    }
    
    $mywork = new Work();
    $mywork -> hour = 9;
    $mywork -> WriteProgram();
    $mywork -> hour = 14;
    $mywork -> WriteProgram();
    ?>
    

      

  • 相关阅读:
    20161101学习笔记
    20161031学习笔记
    20161028学习笔记
    20161027学习笔记
    ReentrantLock Condition
    ReentrantLock 重入锁
    CountDownLatch用法与原理
    场景化解释 AQS原理
    Atomic
    多线程工具类
  • 原文地址:https://www.cnblogs.com/zhutianpeng/p/4232102.html
Copyright © 2020-2023  润新知