用Scala macros实现DCI

源码见内:用Scala macros实现DCI:DCI/scaladci · GitHub

主要使用trait mixin将角色行为混入实体Account中。Context提供混合杂交场所:


trait Context {
implicit protected def obj2binder[OBJ](obj: OBJ) = new Binder(obj)

protected class Binder[OBJ](val obj: OBJ) {
def as[ROLE] = macro Context.bind[OBJ, ROLE]
}
}

Binder中的as[ROLE]方法调用绑定宏macro ,创建Account with Source.。



[该贴被banq于2012-12-11 09:13修改过]

准备学习Scala Macros