RESTful APIを開発しており、リソースにDAOを使用すると便利だと思います。メモリを使用してそれらを格納するだけですが、使用することに決めた場合はライブラリを使用しているユーザーのドアを閉めたくないためです。 DAOのデータベース実装。
私の質問は、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を使用する必要がありますか?
そして、副次的な質問として、ユーザーが自分のDAOを実装するための扉を開くことは私のアプローチですか?