这个模式的名称是否有闭包?

Art*_*ero 5 language-agnostic groovy closures design-patterns terminology

我经常看到在我们有访问对象之前需要执行的查找代码的情况下使用的模式.使用此模式时,通常以单词开头with.

例如,在我们可以使用之前,我们需要从数据库中检索客户记录:

def withCustomer (id, closure) {
    def customer = getCustomer(id)
    closure(customer)
}

withCustomer(12345) { customer ->
    println "Found customer $customer.name"
}
Run Code Online (Sandbox Code Playgroud)

Groovy在闭包或匿名函数之间没有这样的区别.也许,我可以问一下这个模式是否有匿名函数的名称.

Nat*_*hes 4

这就是策略模式。闭包保存一些要作为参数传递给函数的行为,以便函数可以接受不同的行为。请参阅 Peter Norvig 的演讲《动态语言中的设计模式》:

策略是一个变量,其值为函数(例如,对于一流函数,模式是不可见的)