元编程,它有什么用?

时间:2010-08-05 13:19:11

标签: metaprogramming

所以元编程 - 你可以在运行时修改类/对象,注入新的方法和属性。我知道它有利于框架开发;一直在使用Grails,该框架在运行时为您的类添加了一堆方法。你有一个User对象的name属性,而bamm,你得到一个在运行时注入的findByName方法。

  1. 我的描述是否完全描述了这个概念?
  2. 除了框架开发之外,(具体示例)还有什么好处?

2 个答案:

答案 0 :(得分:3)

对我而言,元编程是“编写程序的程序”。

元编程特别适合重用,因为它支持泛化:您可以定义属于特定模式的概念的系列。然后,通过 variability ,您可以在类似但不同的场景中应用该概念。

最简单的例子是@Sjoerd提到的Java的getter和setter:

getter和setter都遵循明确定义的模式:getter返回一个类成员,setter设置一个类成员的值。通常,您构建所谓的模板以允许应用程序和特定模式的重用。模板的工作原理取决于所使用的元编程/代码生成方法。

如果您希望getter或setter的行为略有不同,您可以向模板添加一些参数。这是可变性。例如,如果要在获取/设置时添加其他处理代码,可以添加一个代码块作为可变性参数。混合自定义代码和生成的代码可能很棘手。 ABSE是目前我所知道的唯一一种直接支持自定义代码作为模板参数的MDSD方法。

答案 1 :(得分:1)

元编程不仅在运行时添加方法,还可以在编译时自动创建代码。即代码生成代码。

  • Web服务(即方法在WSDL中定义,您希望将它们用作对象上的实际方法)
  • 避免样板代码。例如,在Java中,您应该使用getter和setter,但这些可以自动为大多数属性创建。