zoukankan      html  css  js  c++  java
  • php实现设计模式之 解释器模式

    <?php
    /*
     * 解释器模式:给定一种语言,定义它文法的一种表示,并定义一个解释器,该解释器利用该表示来解释语言中的句子
     *
     */
    class Expression
    {
    	function interpreter($str)
    	{
    		return $str;
    	}
    }
    
    class ExpressionNum extends Expression
    {
    	function interpreter($str)
    	{
    		switch($str)
    		{
    			case "0": return "零";
    			case "1": return "一";
    			case "2": return "二";
    			case "3": return "三";
    			case "4": return "四";
    			case "5": return "五";
    			case "6": return "六";
    			case "7": return "七";
    			case "8": return "八";
    			case "9": return "九";
    		}
    	}
    }
    
    class ExpressionCharater extends Expression
    {
    	function interpreter($str)
    	{
    		return strtoupper($str);
    	}
    }
    
    class Interpreter
    {
    	function execute($string)
    	{
    		$expression = null;
    		for($i = 0;$i<strlen($string);$i++) {
    			$temp = $string[$i];
    			switch(true)
    			{
    				case is_numeric($temp): $expression = new ExpressionNum(); break;
    				default: $expression = new ExpressionCharater();
    			}
    			echo $expression->interpreter($temp);
    		}
    	}
    }
    
    $obj = new Interpreter();
    $obj->execute("sdf12345abc");
    ?>
    

      UML 类图如下:

  • 相关阅读:
    11月12号实验课
    10月29日实验
    10.15实验课作业
    Idea的使用和设置
    常用的Linux命令
    KAFKA总结
    SpringBoot+Maven+MyBaties+Mysql快速搭建一个项目
    Spring 常见面试
    Windows下安装ZK kafka Mysql dubbo redis
    MySQL常见的面试题
  • 原文地址:https://www.cnblogs.com/taijun/p/4092098.html
Copyright © 2011-2022 走看看