解释器模式

canca17年前 (2007-03-26)设计模式284
//解释器模式--真实例子
//CopyRight(C) CAnca software Office.2006
//Created by CAnca.
import java.util.*;
public class InterpretMode_RealWorld{
 public static void main(String[] args){
  final String str = "0零1九2六3四4一5三6六7七8八9二";
  Context context = new Context(str);
  ArrayList list = new ArrayList();
  list.add(new numToChinese());
  list.add(new chineseToNum());
    
  for(int i = 0 ; i < list.size() ; i++){
   AbstractExpression expression = (AbstractExpression)list.get(i);
   expression.Interpret(context);
  }
 }
}
class Context{
 private String input = "";
 private String output = "";
 public Context(String input){
  this.input = input;
 }
 
 public String getInput(){
  return input;
 }
 
 public void setOutput(String context){
  this.output = context;
 }
 
 public String getOutput(){
  return this.output;
 }
}
abstract class AbstractExpression{
 abstract void Interpret(Context context);
 abstract char Zero();
 abstract char One();
 abstract char Two();
 abstract char Three();
 abstract char Four();
 abstract char Five();
 abstract char Six();
 abstract char Seven();
 abstract char Eight();
 abstract char Night();
}
class numToChinese extends AbstractExpression{
 public void Interpret(Context context){
  String str = "";
  for(int i = 0 ; i < context.getInput().length() ; i++){
   char word = context.getInput().charAt(i);
   switch(word){
    case '0':str += Zero();break;
    case '1':str += One();break;
    case '2':str += Two();break;
    case '3':str += Three();break;
    case '4':str += Four();break;
    case '5':str += Five();break;
    case '6':str += Six();break;
    case '7':str += Seven();break;
    case '8':str += Eight();break;
    case '9':str += Night();break;
    default:str += word;break;
   }
  }
  context.setOutput(str);
  System.out.println("Number To Chinese Interpreted String:" + context.getOutput());
 }
 
 public char Zero(){return '零';}
 public char One(){return '一';}
 public char Two(){return '二';}
 public char Three(){return '三';}
 public char Four(){return '四';}
 public char Five(){return '五';}
 public char Six(){return '六';}
 public char Seven(){return '七';}
 public char Eight(){return '八';}
 public char Night(){return '九';}
}
class chineseToNum extends AbstractExpression{
 public void Interpret(Context context){
  String str = "";
  for(int i = 0 ; i < context.getInput().length() ; i++){
   char word = context.getInput().charAt(i);
   switch(word){
    case '零':str += Zero();break;   
    case '一':str += One();break;    
    case '二':str += Two();break;    
    case '三':str += Three();break;  
    case '四':str += Four();break;   
    case '五':str += Five();break;   
    case '六':str += Six();break;    
    case '七':str += Seven();break;  
    case '八':str += Eight();break;  
    case '九':str += Night();break;  
    default:str += word;break;
   }
  }
  context.setOutput(str);
  System.out.println("Chinese To Number Interpreted String:" + context.getOutput());
 }
 public char Zero(){return '0';}
 public char One(){return '1';}
 public char Two(){return '2';}
 public char Three(){return '3';}
 public char Four(){return '4';}
 public char Five(){return '5';}
 public char Six(){return '6';}
 public char Seven(){return '7';}
 public char Eight(){return '8';}
 public char Night(){return '9';}
}


相关文章

抽象工厂模式

//抽象工厂模式//Copyright CAnca Software office//Created by CAnca.2006public class AbstractFactory{ p...

单例模式

//CopyRight CAnca Software Office. 2006//Created by CAnca. import java.util.*; public class singleto...

建造者模式

//建造者模式//CopyRight(C)CAnca Software Office.//Created by CAnca. import java.util.*; public class Buil...

原型模式

//原型模式//CopyRight(C) CAnca Software Office.2006//Created by CAnca. public class PrototypeMode{ ...

代理模式

//代理模式--真实例子//CopyRight(C)CAnca Software Office.2006//Created by CAnca.   public class ProxyMod...

桥接模式

//桥接模式//CopyRight(C) CAnca Software Office 2006.//Created by CAnca. import java.util.*; public class...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。