原文地址: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))
- 流式接口:new
MyNumber(x+y).sin().log()
4.
任何一个强大的语言都是通过如下三种机制来达成这个目标的:
- 原子:语言中最简单、最基本的实体;
- 组合手段:把原子组合起来构成更复杂实体的方法;
- 抽象手段:命名复杂实体的方法,命名后的复杂实体可以和原子一样通过组合手段组合成为更复杂的实体。
作为程序员来说,用干净的代码实现出功能仅仅是初级的要求,更重要的是要提升通用语言的层次,构建出针对特定问题领域的语言(DSL),这个过程中很关键的一点就是寻找并定义出面向问题领域的 原子概念、组合的方法以及抽象的手段。