WEB开发网
开发学院软件开发Java 实战 Groovy: 使用闭包、ExpandoMetaClass 和类别... 阅读

实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 虽然 EMC 允许您动态定义新行为,然而 Category 允许您将行为保存到独立的类文件中,实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程(8),这意味着您可以在不同的情况下使用它:单元测试、生产代码,等等

虽然 EMC 允许您动态定义新行为,然而 Category 允许您将行为保存到独立的类文件中。这意味着您可以在不同的情况下使用它:单元测试、生产代码,等等。定义单独类的开销在重用性方面获得了回报。

清单 15 演示了对同一个 use 块同时使用 StringHelper 和新创建的 FileHelper:


清单 15. 在 use 块中使用多个类别
class MetaTest extends GroovyTestCase{ 
 void testFileWithCategory(){ 
  File f = new File("iDoNotExist.txt") 
  use(FileHelper, StringHelper){ 
   assertTrue f.exists() 
   assertTrue f.isFile() 
   assertEquals "/opt/some/dir/iDoNotExist.txt", f.absolutePath 
   assertTrue f.text.startsWith("This is") 
 
   assertTrue f.text.shout().startsWith("THIS IS") 
  } 
 
  assertFalse f.exists() 
  shouldFail(java.io.FileNotFoundException){ 
   f.text 
  } 
 } 
} 
 
 
class StringHelper{ 
 static String shout(String self){ 
  return self.toUpperCase() 
 } 
} 
 
 
class FileHelper{ 
 static boolean exists(File f){ 
  return true 
 } 
 
 static String getAbsolutePath(File f){ 
  return "/opt/some/dir/${f.name}" 
 } 
 
 static boolean isFile(File f){ 
  return true 
 } 
 
 static String getText(File f){ 
  return "This is the text of my file." 
 } 
} 

上一页  3 4 5 6 7 8 9 10  下一页

Tags:实战 Groovy 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接