设计模式(23)之解释器模式

解释器模式(Interpreter Pattern),如果一个类型的问题发生的概率很高,那么可以定义一种文法,并定义一个解释器,该解释器通过这些文法句子来解决该问题。

一、需求举例:

C语言由C语言解释器来处理,Java语言由Java解释器处理。

二、类图:

三、代码实例:

1.解释器父类:Expression

package com.lance.interpreter;

public interface Expression {

    void interpreter(Context context);
}

2.C语言解释器:CExpression

package com.lance.interpreter;

public class CExpression implements Expression {
    @Override
    public void interpreter(Context context) {
        System.out.println("This is C language");
    }
}

3.Java语言解释器:JavaExpression

package com.lance.interpreter;

public class JavaExpression implements Expression {
    @Override
    public void interpreter(Context context) {
        System.out.println("This is Java language");
    }
}

4.上下文类:Context

package com.lance.interpreter;

public class Context {

    private String context;

    public String getContext() {
        return context;
    }

    public void setContext(String context) {
        this.context = context;
    }
}

5.主类:InterpreterPattern

package com.lance.interpreter;

public class InterpreterPattern {

    public static void main(String[] args) {

        System.out.println("==========start==========");

        Context context = new Context();
        context.setContext("C");

        Expression cExpression = new CExpression();
        cExpression.interpreter(context);

        System.out.println("=======================");


        context.setContext("Java");

        Expression javaExpression = new JavaExpression();
        javaExpression.interpreter(context);




        System.out.println("==========end==========");

    }
}

输出结果:

==========start==========
This is C language
=======================
This is Java language
==========end==========
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容