【发布时间】:2011-12-15 22:24:52
【问题描述】:
Groovy 中@Delegate 和@Mixin AST 转换有什么区别。
也许我的问题与 OO 以及何时应用不同的模式有关,但我同时使用这两种模式并且可以实现相同的行为。
class Person {
String name = "Clark"
def walk() { "Walk" }
}
@Mixin(Person)
class Superhero {
def fly() { "Fly" }
}
def superman = new Superhero()
assert superman.name == "Clark"
assert superman.walk() == "Walk"
assert superman.fly() == "Fly"
class Person {
String name = "Clark"
def walk() { "Walk" }
}
class Superhero {
@Delegate Person person
def fly() { "Fly" }
}
def superman = new Superhero(person: new Person())
assert superman.name == "Clark"
assert superman.walk() == "Walk"
assert superman.fly() == "Fly"
【问题讨论】:
标签: groovy design-patterns abstract-syntax-tree delegation mixins