मैं एक RESTful API विकसित कर रहा हूं और मुझे लगता है कि मेरे संसाधनों के लिए DAO का उपयोग करना सुविधाजनक है क्योंकि यद्यपि मैं उन्हें स्टोर करने के लिए मेमोरी का उपयोग करने की योजना बना रहा हूं, लेकिन मैं अपने पुस्तकालय का उपयोग करने के लिए कोई दरवाजा बंद नहीं करना चाहता हूं यदि उन्होंने उपयोग करने का निर्णय लिया है डीएओ के लिए एक डेटाबेस कार्यान्वयन।
मेरा सवाल यह है कि क्या डीएओ एकल होना चाहिए या नहीं। यदि यह नहीं है, तो सेवा में DAO का एक उदाहरण होगा और यह मोटे तौर पर इस तरह दिखेगा:
@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);
}
}
हालांकि अगर DAO एक सिंगलटन था, लेकिन मुझे लगता है कि इसमें बहुत अंतर नहीं होगा, बस पहली पंक्ति में:
private IEventSchedulerDao dao = EventSchedulerDao.getInstance();
मुझे अभी भी एक IEventSchedulerDao
उदाहरण का उपयोग करना होगा , लेकिन मुझे लगता है कि सभी एकल इस तरह से काम करते हैं? किसी कारण से मैं हमेशा एकल विधियों को स्थैतिक तरीकों से सहसंबंधित करता हूं, इसलिए उपयोगकर्ता के साथ दिखाई देने वाले एक सिंगलटन उदाहरण के बजाय getInstance()
, यह छिपा होगा और वह EventSchedulerDao.get(name)
एक स्थिर शैली में आदि का उपयोग करेगा । यह कोई बात है या यह सिर्फ मैं हूं?
तो, क्या मुझे सिंगलटन डीएओ नहीं होना चाहिए या नहीं?
और एक पक्ष के प्रश्न के रूप में, क्या यह सही है कि उपयोगकर्ता के लिए अपने स्वयं के DAO को लागू करने के लिए खुले दरवाजे हैं?