RESTful API geliştiriyorum ve kaynaklarım için DAO'ları kullanmanın uygun olduğunu düşünüyorum çünkü bunları saklamak için sadece bellek kullanmayı planlasam da, kullanmaya karar verdiyse kütüphanemi kullananlara bir kapıyı kapatmak istemiyorum DAO için bir veritabanı uygulaması.
Benim sorum DAO'nun singleton olup olmayacağı. Değilse, hizmet DAO'nun bir örneğine sahip olacak ve kabaca şu şekilde görünecektir:
@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 bir singleton olsa da, sanırım sadece ilk satırda çok fazla bir fark olmaz:
private IEventSchedulerDao dao = EventSchedulerDao.getInstance();
Yine de bir IEventSchedulerDao
örnek kullanmak zorunda kalacağım , ama sanırım tüm singletonlar bu şekilde çalışıyor mu? Nedense, her zaman tekilleri statik yöntemlerle ilişkilendiririm, bu yüzden kullanıcı tarafından görülebilen tekli bir örneğe sahip olmak yerine getInstance()
, bu gizli olur ve EventSchedulerDao.get(name)
statik bir şekilde vb. Bu bir şey mi yoksa bu sadece ben mi?
Yani, singleton DAO'ları olmalı mı yoksa olmamalı mı?
Ve bir yan soru olarak, kullanıcının kendi DAO'larını uygulaması için açık kapılara sahip olmak yaklaşımım iyi mi?