22 Kasım 2012 Perşembe

Single Responsibility Principle SRP


Bu tasarım prensibi, her işten tek sınıfın sorumlu olmasını benimsemektedir. Yani bir sınıfta değişiklik yapmak için iki nedeniniz varsa, bu sınıfı ikiye bölmeniz gerekir. Böylece  her bir sınıf, ayrı bir sorumluluğu üstlenmiş olur. Eğer bir sınıfa birden fazla sorumluluk yüklersek, sınıftaki değişiklikler sırasında işleyişi bozabiliriz.

Örnek uygulama ile devam edelim.
public class EmailService: IEmailService
{
      public void sendEmail(string email)
      {
          if(isUserAuthorized())
          {
              // email gönder
          }
      }
 
      private bool isUserAuthorized()
      {
           // veritabanına git
           // query user
           // user varsa ve yetkiliyse
           return true;
      }
 
}
Yukarıdaki EmailService sınıfı, hem Email gönderme işlemini yapmaktan hem de kullanıcının veritabanında olup olmadığını kontrol etmekle sorumludur. Yani kullanıcı kontrolü ve Email gönderme işlemleri farklı işlemler. Bu durumda sınıfta değişiklik yapmak için iki nedenimiz var. Bunu şu şeklide Single Responsibility Prensibine uygun hale dönüştürebiliriz:
public class EmailService: IEmailService
{
      public void sendEmail(string email)
      {
         if(MembershipService.IsUserAuthorized("bayram"))
         {
             // email gönder
         }
      }
}
 
public class MembershipService
{
      public static bool IsUserAuthorized(string user)
      {
          // veritabanına git
          // query user
          // user varsa ve yetkiliyse
          return true;
      }
}
Bu durumda her sınıf kendi sorumluluğunu yerine getirmiş oldu.



Kaynak : http://www.bayramucuncu.com/single-responsibility-principle-srp-tasarim-prensibi/

Hiç yorum yok: