所以元编程 - 你可以在运行时修改类/对象,注入新的方法和属性。我知道它有利于框架开发;一直在使用Grails,该框架在运行时为您的类添加了一堆方法。你有一个User对象的name属性,而bamm,你得到一个在运行时注入的findByName方法。
答案 0 :(得分:3)
对我而言,元编程是“编写程序的程序”。
元编程特别适合重用,因为它支持泛化:您可以定义属于特定模式的概念的系列。然后,通过 variability ,您可以在类似但不同的场景中应用该概念。
最简单的例子是@Sjoerd提到的Java的getter和setter:
getter和setter都遵循明确定义的模式:getter返回一个类成员,setter设置一个类成员的值。通常,您构建所谓的模板以允许应用程序和特定模式的重用。模板的工作原理取决于所使用的元编程/代码生成方法。
如果您希望getter或setter的行为略有不同,您可以向模板添加一些参数。这是可变性。例如,如果要在获取/设置时添加其他处理代码,可以添加一个代码块作为可变性参数。混合自定义代码和生成的代码可能很棘手。 ABSE是目前我所知道的唯一一种直接支持自定义代码作为模板参数的MDSD方法。
答案 1 :(得分:1)
元编程不仅在运行时添加方法,还可以在编译时自动创建代码。即代码生成代码。