`

利用 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版本,代码加报告加用户说明)

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

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

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

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

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

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

    百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText();...

    java开源包4

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

    java开源包3

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

    java开源包101

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

    java开源包11

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

    java开源包6

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

    java开源包9

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

    java开源包8

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

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

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

    java开源包10

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

    JavaCodeGenerator:功能强大的Java代码生成器DSL

    与大多数生成器不同,JCG不是基于模板的;而是基于模板的。 在纯Java中使用DSL来生成Java! JCG的目标不是涵盖所有Java语言功能,而是允许创建功能强大,健壮且设计良好的生成器。 安装 开始使用JCG的最快方法是将...

    java开源包5

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

    parsecj:用于构建LL(1)解析器的Java monadic解析器组合器框架

    一些值得注意的功能包括: 可组合的解析器组合器,可提供DSL来实现来自语法的解析器。 解析失败时的提示性错误消息。 由于解析器和输入是不变的,因此是线程安全的。 一种组合器方法,可与Haskell对应的Parsec镜像...

    java开源包1

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

Global site tag (gtag.js) - Google Analytics