美文网首页
二十五、解释器模式

二十五、解释器模式

作者: LeeLeCoder | 来源:发表于2017-08-08 22:42 被阅读0次

1. 何为解释器模式

解释器模式():给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

正则表达式,浏览器都是解释器模式的应用。解释器模式类似百度翻译、模板引擎、加密算法等。

解释器模式的使用场景一般都有以下特点:
(1)需求不确定(对于百度翻译来说,输入的内容在开发时不能确定;对于加密算法,用户要加密什么内容也不确定;在编程时不知道,所以要动态代理。)
(2)按规律来翻译内容。

解释器模式如图1-1所示:

图1-1 解释器模式

2. 代码实现

(1)解释器上下文环境

@interface LLContext : NSObject

@property (nonatomic, copy) NSString *input;
@property (nonatomic, copy) NSString *output;

- (instancetype)initWithInput:(NSString *)input;

@end


@implementation LLContext

- (instancetype)initWithInput:(NSString *)input{
    self = [super init];
    if (self) {
        _input = input;
    }
    return self;
}

- (NSString *)output{
    return [NSString stringWithFormat:@"输入的是%@",_input];
}

@end

(2)解释器抽象类

@interface LLAbstractExpression : NSObject

-(void)interpret:(LLContext *)context;

@end


@implementation LLAbstractExpression

-(void)interpret:(LLContext *)context{
    return;
}

@end

(3)解释器具体实现类

@interface LLTerminalExpression : LLAbstractExpression

@end

@implementation LLTerminalExpression

- (void)interpret:(LLContext *)context{
    NSLog(@"终端解释器,context == %@",context.output);
}

@end



@interface LLNonterminalExpression : LLAbstractExpression

@end

@implementation LLNonterminalExpression

- (void)interpret:(LLContext *)context {
    NSLog(@"非终端解释器,context == %@",context.output);
}

@end

(4)客户端调用

LLContext *context = [[LLContext alloc]initWithInput:@"12345"];
NSMutableArray *list = [[NSMutableArray alloc]init];
    
[list addObject:[[LLTerminalExpression alloc]init]];
[list addObject:[[LLNonterminalExpression alloc]init]];
[list addObject:[[LLTerminalExpression alloc]init]];
[list addObject:[[LLTerminalExpression alloc]init]];
    
for(LLAbstractExpression *exp in list) {
    [exp interpret:context];
}

相关文章

  • 二十五、解释器模式

    1. 何为解释器模式 解释器模式():给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示...

  • 第5章 -行为型模式-解释器模式(终)

    一、解释器模式的简介 二、解释器模式的优缺点 三、解释器模式的实例

  • 17.解释器模式(行为型)

    解释器模式(行为型) 解释器模式很难学,使用率很低! 一、相关概念 1). 解释器模式概述 解释器模式是一种使用频...

  • 解释器模式

    一、解释器模式介绍 二、解释器模式代码实例

  • 解释器模式

    解释器模式 解释器模式的定义 解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的方案...

  • 行为型模式:解释器模式

    原文首发:行为型模式:解释器模式 十一大行为型模式之十:解释器模式。 简介 姓名 :解释器模式英文名 :Inter...

  • 折腾Java设计模式之解释器模

    解释器模式 解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器...

  • 设计模式[22]-解释器模式-Interpreter Patte

    1.解释器模式简介 解释器模式(Interpreter Pattern)模式是行为型(Behavioral)设计模...

  • 解释器模式

    今天和大家分享的模式是解释器模式。 首先介绍一下解释器模式适合解决哪类问题。 其实,解释器模式需要解决的问题是,如...

  • 解释器模式

    1. 解释器模式 1.1 定义: 解释器模式(Interpreter) : 定义一种文法的表示,并定义一种解释器...

网友评论

      本文标题:二十五、解释器模式

      本文链接:https://www.haomeiwen.com/subject/feahkxtx.html