• [php]php设计模式 State (状态模式)


    1 <?php
    2 /**
    3 * 状态模式
    4 *
    5 * 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类
    6 *
    7 */
    8 interface State
    9 {
    10 publicfunction handle($state);
    11 publicfunction display();
    12 }
    13
    14 class Context
    15 {
    16 private$_state=null;
    17
    18 publicfunction __construct($state)
    19 {
    20 $this->setState($state);
    21 }
    22
    23 publicfunction setState($state)
    24 {
    25 $this->_state =$state;
    26 }
    27
    28 publicfunction request()
    29 {
    30 $this->_state->display();
    31 $this->_state->handle($this);
    32 }
    33 }
    34
    35 class StateA implements State
    36 {
    37 publicfunction handle($context)
    38 {
    39 $context->setState(new StateB());
    40 }
    41
    42 publicfunction display()
    43 {
    44 echo"state A<br/>";
    45 }
    46 }
    47
    48 class StateB implements State
    49 {
    50 publicfunction handle($context)
    51 {
    52 $context->setState(new StateC());
    53 }
    54
    55 publicfunction display()
    56 {
    57 echo"state B<br/>";
    58 }
    59 }
    60
    61 class StateC implements State
    62 {
    63 publicfunction handle($context)
    64 {
    65 $context->setState(new StateA());
    66 }
    67
    68 publicfunction display()
    69 {
    70 echo"state C<br/>";
    71 }
    72 }
    73
    74 // 实例化一下
    75 $objContext=new Context(new StateB());
    76 $objContext->request();
    77 $objContext->request();
    78 $objContext->request();
    79 $objContext->request();
    80 $objContext->request();
  • 相关阅读:
    DB-概念-同义词:同义词/Synonym
    DB-概念-数据库:数据库/Database
    DB:目录
    信息安全-OAuth2.0:NuGetFromMicrosoft
    资源-DotNet-站点:DotNet 站点列表
    Nuget-Swagger-Swashbuckle:Swashbuckle
    Nuget-Doc:Nuget 简介
    Nuget-Doc:NuGet 介绍
    术语-Portal:Portal(Web站点)
    cocos2d-html5模板分析
  • 原文地址:https://www.cnblogs.com/bluefrog/p/2085604.html
Copyright © 2020-2023  润新知