Repository Pattern Nedir?

Nesneye yönelimli programalada (Object Oriented Programming) en önemli kuralladan birisi de benzer işi "N defa" yapmak yerine bunu tek yere taşıyıp "N defa" çağırmaktır yani kod tekrarı yapmamaktır. Veri çekerken bu kısımda yardımımıza "Repository Pattern" koşuyor. Bu pattern datalara tek noktadan erişim sağlamamıza olanak sağlar. Bunu örnekle açıklamak gerekirse eğer:

Bir tane bloğumuz olduğunu düşünün. bunu için bir "Post" domaininizin olduğunu düşünün. burada ORM olarak Entity Framework kullanacağım.

public class Post
{
       public Guid Id { get; set; }
       public string Header { get; set; }
       public string Content { get; set; }
}

Şimdi bu Post domaini ile yapacağımız tüm data işlemlerini tek noktada toplayalım. Öncelikli olarak bir interface class oluşturalım. Ve içine bizim için gerekli methotlarımızı yazalım.

public interface IPostRepository 
{
       ILlist GetAllPost();
       Post GetPost(Guid postId);

       void AddPost(Post post);
       void DeletePost(Post post);
       void Commit(Post post);
}
public class PostRepository : IPostRepository
{
       PostEntities db = new PostEntities();

       Public IList GetAllPost(Guid postId)
       {
              return db.Posts;
       }

       public Post GetPost(Guid postId)
       {
             return db.Posts.SingleOrDefault(x => x.Id== postId);
       }

       public void Add(Post post)
       {
             db.Posts.AddObject(post);
       }

       public void Delete(Post post)
       {
            db.Posts.DeleteObject(post);
      }

      public void Save()
      {
            db.SaveChanges();
      }
}

Burada Post ile ilgili yapacağımız tüm işlemlerde "PostRespository" kullanılır. Yukarıdaki örnekte repository listeleme ,ekleme, silme ve post getirme işlemlerini yapmaktadır. Eğer listeyi sıralı çekeceksek bunu yine aynı Respository içine farklı bir method olarak ekleyerek yaparız. Bu sayede Post'a ait tüm işlemleri tek noktadan yapmış oluyoruz. Hem kod tekrarından yapmamış olduk hem de tek noktadan kontrol etmiş olduk. Bu yani tek noktadan kontrol eden yapıya "Repository Pattern" denir.

Erkan DURSUN