在这个包结构中放置Reader / Writer / Emailer ...... *类的位置?

时间:2011-06-28 10:00:25

标签: java 3-tier package-structuring

我最初被教导构建3层的方式如下:

  • 服务
  • utils的
  • jsf(豆) ...

可实例化的A * er类不适合这些包,尤其是类,其中类主要对静态方法进行分组。它可以作为一种思想添加到服务中,但感觉很尴尬。

从那以后,我看到了更复杂的包结构(可能是从Maven借来的):

  • 常量(harcoded constants and enums)
  • dao.impl(接口的实现)
  • 模型
  • 资源(用于属性和配置文件)
  • 服务
  • service.impl
  • UI ...

但是,我仍然没有看到哪里可以放置一个* er类,现在我看到其他类型的类弹出像自定义异常和Spring的这个原始模式(见下文)。通常,似乎这些是您通常在框架/ API中找到的类的类型。

import org.springframework.context.ApplicationContext;

public class AppContext {  

    private static ApplicationContext ctx;  

    /** 
     * Injected from the class "ApplicationContextProvider" which is automatically 
     * loaded during Spring-Initialization. 
     */  
    public static void setApplicationContext(ApplicationContext applicationContext) {  
        ctx = applicationContext;  
    }  

    /** 
     * Get access to the Spring ApplicationContext from everywhere in your Application. 
     * 
     * @return 
     */  
    public static ApplicationContext getApplicationContext() {  
        return ctx;  
    }  
}

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class ApplicationContextProvider implements ApplicationContextAware {  

    public void setApplicationContext(ApplicationContext ctx) throws BeansException {  
        // Wiring the ApplicationContext into a static method  
        AppContext.setApplicationContext(ctx);  
    }
} 

您如何将这些或任何其他“无法分类”分组?

1 个答案:

答案 0 :(得分:1)

这取决于Read / Write和Emailer类的功能。

假设Emailer类发送电子邮件,甚至thoguh它是可实例化的类,将适合 util helper 包,因为它不是紧密绑定到应用程序逻辑。

对于异常,我看到了将异常类放在正在使用它的包旁边的单独的* .exceptions包中,或者在使用它的包内。

e.g:

application.dao
application.dao.impl
application.dao.exceptions