1

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

  • 领域
  • 服务
  • 实用程序
  • jsf(豆类)...

可实例化的 *er 类不适合这些包中的任何一个,尤其是类主要对静态方法进行分组的实用程序。可以将其添加到服务中作为一个侧面的想法,但这感觉很尴尬。

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

  • 常量(硬编码常量和枚举)
  • dao.impl(接口的实现)
  • 模型
  • 资源(用于属性和配置文件)
  • 服务
  • 服务.impl
  • 你...

但是,我仍然看不到可以在哪里放置 *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);  
    }
} 

您将如何对这些或任何其他“不可分类”进行分组?

4

1 回答 1

1

这取决于 Read/Write 和 Emailer 类的作用。

假设 Emailer 类发送电子邮件,即使它是可实例化的类,也适合utilhelper包,因为它没有与应用程序逻辑紧密绑定。

对于异常,当他们将异常类放入单独的 *.exceptions 包中时,我看到了方法,就在使用它的包旁边,或者在使用它的包内。

例如:

application.dao
application.dao.impl
application.dao.exceptions
于 2011-06-28T10:19:04.413 回答