| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 解释器模式,女朋友给男朋友的一个机会! -> 正文阅读 |
|
[Java知识库]解释器模式,女朋友给男朋友的一个机会! |
? **请注意!请注意!!!**今天讲给大家讲解非常“有用”的设计模式,解释器模式!!! ? 设计模式有三大种类,一种是创建型模式,一种是结构型模式,最后一种是行为性模式,那么解释器模式属于哪一种呢?带领大家一起来了解学习解释器模式! ? 本次介绍围绕着以下五点展开。什么是解释器模式?用来做什么?怎么做?有哪些优点?有哪些不足? ? 解释器模式顾名思义,就是用来定义和解释。 ? 给定一种特定语言,这个语言有特定的文法,解释器可以解释这个语言中的句子含义。即解释器提供一种语言,如java,同时它也提供一种手段去解析java语言写出来的代码。 ? 大家可能也会想到这就是类似编译原理,一个算术表达式要经过词法分析,语法分析,构建语法树啥的;还有正则表达式;SQL解析,编译器等等,其实都是解析式模式的一种实现。 ? 那怎么做?一个是说要有像编译原理中的终结符和非终结符,构建一颗语法树。同时需要有一个环境类,来管理输入和输出。 ? 这里我们举一个例子,输入一个表达式a+b-c+d-e,同时给这5个变量赋值,计算出它的值。那么使用解释器模式要如何实现? ? 我们为解释器定义一个抽象解释类Expression,所有的流转通过interpreter方法实现。 ? 上下文管理输入输出使用一个HashMap去实现。 ? 定义符号解释类SymbolExpression,加法解释类AddExpreesion,减法解释类SubExpression。 类图: 具体代码实现:
? 或许看代码会有点云里雾里,希望大家能手动敲一遍,或许会对整个过程有更进一步的理解,在编码的同时不断思考,提升自我。 ? 很容易发现解释器模式是属于行为性模式的一种,这种模式更关注对象之间的通信。 ? 解释器模式优点,结构清晰,可拓展性好。但也有缺点,一般用在比较底层场景,平常敲代码可使用的场景比较少,并且解释器模式采用的是递归的方式,当语言比较长,性能不高;同时如果文法比较复杂,也需要更多的相应解释类。 ? 好了,希望本篇文章对你有所帮助! 愿每个人都能带着怀疑的态度去阅读文章并探究其中原理。 道阻且长,往事作序,来日为章。 期待我们下一次相遇! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 21:13:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |