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

5 篇文章 0 订阅

原文地址: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),这个过程中很关键的一点就是寻找并定义出面向问题领域的 原子概念、组合的方法以及抽象的手段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值