Каким должен быть лучший способ разработки класса DAO?
Подход №1: Дизайн класса DAO как объекта.
class Customer {
//customer class
}
class CustomerDAO {
public void saveCustomer(Customer customer) {
//code
}
public Customer getCustomer(int id) {
//code
}
}
//Client code
class client {
public static void main(String[] args) {
CustomerDAO customerDAO = new CustomerDAO();
Customer customer = new Customer();
customerDAO.saveCustomer(customer);
}
}
Подход № 2: Дизайн класса DAO со статическими методами (aka static class)
class Customer {
//customer class
}
class CustomerDAO {
public static void saveCustomer(Customer customer) {
//code
}
public static Customer getCustomer(int id) {
//code
}
}
//Client code
class client {
public static void main(String[] args) {
Customer customer = new Customer();
CustomerDAO.saveCustomer(customer);
}
}
В подходе № 1 мне нужно создать объект класса DAO во всем клиентском коде (другой вариант - передать ссылку DAO вокруг). в то время как в подходе №2 мне не нужно создавать объект, а статические методы могут быть сконструированы без отслеживания состояния.
Итак, какой подход является лучшим в дизайне классов DAO?