`

利用 Java 实现组合式解析器,基于 Java 的界面布局 DSL 的设计与实现(转载)

 
阅读更多

原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-compose/#icomments

               https://www.ibm.com/developerworks/cn/java/j-lo-uidsl/

               Demo程序在附件中

 

归纳:

1.要提供一组闭包操作: empty,above,beside

   通过这些操作的组合,为实现任意复杂的布局提供了可能

 

2.元素组合的结果,也是一个元素,能够再次参与组合,极大的增加了扩展性

 

3.fluent interface(流式接口)

   面对这个数学公式,你会如何编程?

   ln(sin(x+y))

  • 一般方法: Math.log(Math.sin(x + y))
  • 流式接口:newMyNumber(x+y).sin().log()

4.

任何一个强大的语言都是通过如下三种机制来达成这个目标的:

  • 原子:语言中最简单、最基本的实体;
  • 组合手段:把原子组合起来构成更复杂实体的方法;
  • 抽象手段:命名复杂实体的方法,命名后的复杂实体可以和原子一样通过组合手段组合成为更复杂的实体。

作为程序员来说,用干净的代码实现出功能仅仅是初级的要求,更重要的是要提升通用语言的层次,构建出针对特定问题领域的语言(DSL),这个过程中很关键的一点就是寻找并定义出面向问题领域的 原子概念、组合的方法以及抽象的手段。

分享到:
评论

相关推荐

    基于Java的界面布局DSL的设计与实现

    界面布局语言介绍界面布局语言设计与实现关于设计的几点思考参考资料界面设计应该是一项充满创造性、富有乐趣的工作,但是却往往被认为非常的枯燥和繁琐。究其原因,是因为界面布局领域所采用的描述概念和具体的实现...

    bupt期末DSL设计:一种领域特定脚本语言的解释器的设计与实现(java版本,代码加报告加用户说明)

    在这个项目中,我们聚焦于一个使用Java实现的DSL解释器的设计与实现,这是一份面向北京邮电大学(BUPU)学生的期末课程设计。 首先,我们要理解DSL的概念。DSL可以分为内部DSL和外部DSL。内部DSL通常嵌入到一个更大...

    一款基于SQL查询ES的Java工具包,支持SQL解析DSL,支持JDBC驱动,支持和Mybatis、Spring集成.zip

    1. 源代码:Java类和接口,实现了SQL到DSL的转换、JDBC驱动、与Mybatis和Spring的集成等核心功能。 2. 示例或测试代码:展示如何在实际项目中使用这个工具包,包括如何配置、如何编写SQL查询、如何在Mybatis或Spring...

    基于Java语言的专利检索式转Elasticsearch DSL实现设计源码

    本项目为基于Java语言的专利检索式转换Elasticsearch DSL实现设计源码,包含40个文件,其中32个为Java源文件,2个XML文件,2个其他语言文件。主要功能是将企业使用的检索式转换为Elasticsearch的查询语言,以提高...

    基于Java的动态脚本语言(DSL)解析框架设计源码

    本项目为基于Java实现的动态脚本语言(DSL)解析框架设计源码,包含72个文件,其中包含60个Java源文件、6个DSL脚本文件以及其他辅助文件,旨在提供灵活的解析能力,特别适用于动态SQL(DSQL)场景,如Flink SQL、...

    DSL语法解析器生成器dropincc.java.zip

    专为DSL打造,相对与使用其它常见工具(javacc, antlr等)做DSL解析,代码量急剧下降;上手较为容易,让用户更加关注自身业务内容 需要jdk1.6或以上版本运行,无任何其它依赖 识别LL(*)语法 ...

    基于Gradle的Java DSL入门级设计源码Demo

    该项目为基于Gradle构建的Java DSL入门级设计源码,包含44个文件,涵盖18个XML配置文件、5个Gradle构建脚本、5个Java源代码文件、5个PNG图片文件、3个Git忽略配置文件、2个属性文件以及1个Markdown文件。项目旨在...

    groovy 一个不错的文档 实现dsl

    这表明文档将介绍Groovy在DSL设计与实现方面的特性和优势。 #### 标签解读 - **标签**: "groovy for dsl" 该标签进一步强调了文档的重点是Groovy在DSL领域的应用。这意味着文档将深入探讨Groovy语言如何支持DSL的...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    用XText工具开发的自定义DSL语言

    总的来说,利用XText开发自定义DSL语言并实现表达式解释器,是一个涉及语言设计、解析理论和程序执行的综合过程。它可以帮助我们为特定任务创建简洁、高效的解决方案,并且XText的自动化工具链极大地简化了这一过程...

    Java 下 简单 实现 tr069 协议

    在Java平台上实现TR069,可以利用其跨平台的优势,实现对不同操作系统和硬件环境的支持。 首先,我们来看"JAVA平台下对TR069协议的实现.doc"这份文档。这很可能是一个详细的技术报告,阐述了如何在Java环境下开发一...

    JAVA上百实例源码以及开源项目源代码

    凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...

    CMM语言解释器JAVA实现(javacc5.0)增强版

    这个增强版的实现是基于JAVA语言,并利用了javacc5.0工具来完成语法解析和词法分析的部分。下面将详细讨论相关知识点。 1. **CMM语言**:CMM可能代表一种特定的编程模型或领域专用语言(DSL),用于解决特定问题。...

    领域语言(DSL)的设计与实践

    领域语言(DSL)的设计与实践是一门专门研究如何为特定领域设计专业语言的学问,这些领域包括但不限于音效编程、数据库操作、财务计算等。DSL旨在为这些特定领域的用户提供更高效、更直观的编程和操作方式,从而简化...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    之基于Java+大数据的定位电商用户画像实现精准营销项目源码.zip

    总的来说,此项目涵盖了从数据获取、处理、分析到应用的全过程,展示了Java与大数据技术在电商领域的深度结合,旨在提升营销效率,优化用户体验,对于学习和理解大数据驱动的电商运营具有很高的参考价值。

    Python-funcparserlib基于Python功能组合的递归下降解析器

    6. **组合解析器**:通过上述操作,我们可以构建复杂的解析规则。例如,我们可以定义一个解析算术表达式的解析器,它可以处理加法、减法、乘法和除法运算。 在实际应用中,`funcparserlib`常用于解析配置文件、...

    Java8采用Martin Fowler的方法创建内部DSL

    Martin Fowler是一位知名的技术作家和软件咨询师,他在他的著作中多次探讨了DSL的设计与实现。 首先,让我们深入理解什么是DSL。领域特定语言是为了解决特定领域问题而设计的编程或配置语言。相比于通用语言如Java...

Global site tag (gtag.js) - Google Analytics