Tôi đang phát triển API RESTful và tôi nghĩ việc sử dụng DAO cho tài nguyên của mình là thuận tiện vì mặc dù tôi dự định chỉ sử dụng bộ nhớ để lưu trữ chúng, tôi không muốn đóng cửa với bất kỳ ai đang sử dụng thư viện của mình nếu họ quyết định sử dụng triển khai cơ sở dữ liệu cho DAO.
Câu hỏi của tôi là liệu DAO có nên là một người độc thân hay không. Nếu không, dịch vụ sẽ có phiên bản DAO và nó sẽ trông giống như thế này:
@Path("eventscheduler")
public class EventSchedulerService {
private IEventSchedulerDao dao = new EventSchedulerDao();
// in case a different implementation is to be used
public void setEventSchedulerDao(IEventSchedulerDao dao) {
this.dao = dao;
}
@Path("{uniqueName}")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Tournament getTournament(@PathParam("name") String uniqueName) {
return dao.get(uniqueName);
}
@Path("create")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Tournament createTournament(Tournament tournament) {
return dao.create(tournament);
}
}
Mặc dù nếu DAO là một người độc thân, nhưng tôi đoán sẽ không có nhiều sự khác biệt, chỉ trong dòng đầu tiên:
private IEventSchedulerDao dao = EventSchedulerDao.getInstance();
Tôi vẫn sẽ phải sử dụng một IEventSchedulerDao
ví dụ, nhưng tôi đoán tất cả các singleton đều hoạt động như thế này phải không? Vì một số lý do, tôi luôn luôn tương quan các singletons với các phương thức tĩnh, vì vậy thay vì có một cá thể singleton hiển thị cho người dùng vớigetInstance()
, điều này sẽ bị ẩn và anh ấy / cô ấy sẽ chỉ sử dụng EventSchedulerDao.get(name)
, v.v ... theo kiểu tĩnh. Đây là một điều hay đây chỉ là tôi?
Vì vậy, tôi nên hay không nên có DAO đơn?
Và như một câu hỏi phụ, liệu cách tiếp cận của tôi có mở ra cho người dùng thực hiện DAO của họ không?