2011-10-15 43 views
1

我有一个协议栈的实现,其中每个层接收到下面层的构造,以便与他们交流,如:Java接口实现类文件

ApplicationLayer app = 
     new ApplicationLayer(
       new DataLinkLayer(
        new PhysicalLayer() 
)); 

我需要在这里它的控制类为了通过改变一个文件来改变图层类型(不是.java之类的,就像.xml一样)。其中一个可能的用法是实现每个层之间记录层,如:

ApplicationLayer app = 
      new ApplicationLayer( 
        new AppLogLayer( 
         new DataLinkLayer(
           new DataLinkLogLayer(
            new PhysicalLayer() 
)))); 

就这样,我的源代码保持产量不变(在这里我们不需要登录)和发展(我需要日志记录),只需通过更改外部(到.jar)文件。

有没有什么框架可以做到这一点?优先使用Eclipse集成。

回答

2

听起来像你想要控制库的依赖注入/反转。 Spring和Guice是典型的例子,虽然对于这样简单的事情,你可能只是旋转自己的东西。

1

你可以看看使用谷歌Guice库的依赖注入。

1

SLF4J你在部署更改日志德法只改变一个罐子。

请参见:http://www.slf4j.org/也许可以帮助你。

+0

据我所知,SLF4J只是用于日志记录。记录它只是一个实际的例子,我真正需要做的是通过改变文件来改变变量类和构造函数参数(Guice似乎完成了这项工作) – rnunes

0

如果你只是在寻找一种方法,使开发时间登录与生产时间没有记录,你可能只是使用日志框架的日志级别设施或便于在Java中,很多未使用的断言功能(> 1.4) 。这将比改变不同环境的源代码更清洁。

上断言一句:您可以启用/通过传递参数给你的JVM禁止在JVM的断言设施。断言代码不是被执行(如果该标志是打开的),或者如果该标志是被执行的。见http://java.sun.com/developer/technicalArticles/JavaLP/assertions/

断言实践建议和罗伯特·西蒙斯“铁杆的Java”一书中所描述的,如果我记错。