Где разместить классы Reader / Writer / Emailer ... * er в этой структуре пакета? - PullRequest
1 голос
/ 28 июня 2011

То, как меня изначально учили структурировать 3-уровневый, таково:

  • дао
  • домен
  • Услуга
  • 1010 * Utils *
  • JSF (бобы) ...

Класс * er, который является инстанцируемым, не подходит ни к одному из этих пакетов, особенно к тем, где классы в основном группируют статические методы. Это может быть добавлено к услугам как побочная мысль, но это чувствует себя неловко.

С тех пор я видел более сложную структуру пакета (вероятно, заимствованную у Maven):

  • константа (константы и перечисления)
  • дао
  • dao.impl (реализации интерфейсов)
  • модель
  • ресурсов (для файлов свойств и конфигурации)
  • сервис
  • service.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);  
    }
} 

Как бы вы сгруппировали эти или любые другие «неклассифицируемые»?

1 Ответ

1 голос
/ 28 июня 2011

Это зависит от того, что делают классы Чтение / Запись и Emailer.

Предполагая, что класс Emailer отправляет электронные письма, даже если это инстанцируемый класс, вписывается в util или helper пакет, так как он не тесно связан с логикой приложения.

Для исключений я видел подход, когда они помещают классы исключений в отдельный пакет * .exceptions прямо рядом с пакетом, в котором он находится.используется или внутри упаковки, где он используется.

Например:

application.dao
application.dao.impl
application.dao.exceptions
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...