zoukankan      html  css  js  c++  java
  • Java二十三设计模式之------解释器式

    一、解释器模式(Interpreter)
    解释器模式一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。

    Context类是一个上下文环境类,Plus和Minus分别是用来计算的实现,代码如下:

    1. public interface Expression {  
    2.     public int interpret(Context context);  
    3. }  
     
    1. public class Plus implements Expression {  
    2.   
    3.     @Override  
    4.     public int interpret(Context context) {  
    5.         return context.getNum1()+context.getNum2();  
    6.     }  
    7. }  
    1. public class Minus implements Expression {  
    2.   
    3.     @Override  
    4.     public int interpret(Context context) {  
    5.         return context.getNum1()-context.getNum2();  
    6.     }  
    7. }  
     
    1. public class Context {  
    2.       
    3.     private int num1;  
    4.     private int num2;  
    5.       
    6.     public Context(int num1, int num2) {  
    7.         this.num1 = num1;  
    8.         this.num2 = num2;  
    9.     }  
    10.       
    11.     public int getNum1() {  
    12.         return num1;  
    13.     }  
    14.     public void setNum1(int num1) {  
    15.         this.num1 = num1;  
    16.     }  
    17.     public int getNum2() {  
    18.         return num2;  
    19.     }  
    20.     public void setNum2(int num2) {  
    21.         this.num2 = num2;  
    22.     }  
    23.       
    24.       
    25. }  
     
    1. public class Test {  
    2.   
    3.     public static void main(String[] args) {  
    4.   
    5.         // 计算9+2-8的值  
    6.         int result = new Minus().interpret((new Context(new Plus()  
    7.                 .interpret(new Context(9, 2)), 8)));  
    8.         System.out.println(result);  
    9.     }  
    10. }  

    最后输出正确的结果:3。

    基本就这样,解释器模式用来做各种各样的解释器,如正则表达式等的解释器等等!

    转载自 https://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html

  • 相关阅读:
    oracle转义用单引号
    【转】plsql 永久注册码适用个版本
    winform datagridview某一列设为自动宽度
    Allow windows service to "Interact with desktop"
    Format a Hard Drive in Csharp C#格式化总结
    Lib New
    大嫂的HTML
    ASP.NET 分页控件
    linux搭建常用命令(运行jar,查看进程)
    如何用navicat连接linux服务器上的mysql以及重启服务
  • 原文地址:https://www.cnblogs.com/wuxinyiwu/p/8457991.html
Copyright © 2011-2022 走看看