インタフェースなしでリポジトリパターンを実装するのは悪いですか?インタフェースのないリポジトリパターン
リポジトリ - クラス
public class WebRepository<T>
{
private readonly Type persitentType = typeof(T);
public virtual T GetById(int id)
{
return NHibernateSession.Get<T>(id);
}
public virtual List<T> GetAll()
{
return GetByCriteria();
}
public List<T> GetByCriteria(params ICriterion[] criterion)
{
ICriteria criteria = NHibernateSession.CreateCriteria(persitentType);
foreach (ICriterion criterium in criterion)
criteria.Add(criterium);
return criteria.List<T>() as List<T>;
}
public T Save(T entity)
{
NHibernateSession.Save(entity);
return entity;
}
public T SaveOrUpdate(T entity)
{
NHibernateSession.Update(entity);
return entity;
}
public void Delete(T entity)
{
NHibernateSession.Delete(entity);
}
private ISession NHibernateSession
{
get
{
return SessionManager.CurrentSession;
}
}
}
我々は ProductRepository使用リポジトリ延長希望の場合:リポジトリとoverriderを\方法を拡張します。
私はインターフェイスは、私たちを聞かせて知っている:私はNHibernateはを交換し、テストを記述するのに十分な時間を持っていないしたくない場合は
- 使用TDD方式
- は
を永続性エンジンを交換してくださいしかし、 。だから、他の利点は、(IRepository<T>, IProductRepository
で)
おかげで、古典的なリポジトリパターンを使用するアンドリュー
何
テストを書く時間がありませんか?私はあなたがデバッグのための時間がたくさんあることを願っています! –