Özetli SRP, nesnenin sadece bir sorumluluğunun olmasıdır. Tam anlam olarak ana hedef ise bir metodun veya bir sınıfın yalnızca bir sorumluluğu olmalıdır ve bir metod veya sınıf (nesne) yalnızca bir amaç uğruna değiştirilebilir, o amaçta sınıfa yüklenen sorumluluktur. SRP sorumlulukların ayrımıdır.
Sınıflar oluşturulup sorumluluklar tasarlanırken oluşturulan sınıfın sorumluluklarının neyi kapsayıp neleri kapsamayacağının kararlarının verildii aşamadır. Bu aşamada “Her sınıfın veya metodun tek bir sorumluluğu olmalı” ilkesi ile kararlar verilir veya özleşleştirilen farklı bir cümle ile ifade etmek gerekirse “Bir tek şeyi yap ve onu en iyi yap.”
Bunun nedeni ise geliştirmenin modülerleştirilip yönetilebilirliğini sağlamak ve projede yapılacak değişikliklerin daha kolay şekilde entegre edilmesini sağlamaktır. Tek bir metot altınca onlarca farklı işlem yerine yalnızca tek bir sorumluluk olmalıdır. Bu parçalanma olası problemlerin çözümlerini dahada basitleştirerek zaman kazandıracaktır.
Geliştirilen sınıf veya fonksiyon birden fazla amaca hizmet ediyorsa bu kuralların doğru uygulanmadığı anlamına gelmektedir. Bir nesne, sınıf veya method ne kadar fazla sorumluluk alırsa, o kadar fazla değişime maruz kalacağı anlamına gelmektedir.
Örnek:
Örnekte mail işlemlerini yapması için ‘Mailler’ isminde bir class oluşturup hemen altında ise Mail gönderme ve doğrulama işlemlerimizi yapıyoruz. Bu kısımda Metodlardaki sorumlulukları teke indirdik ve doğrulama operasyonlarını ‘ValidateMail’ içerisinde mail gönderme operasyonlarını ise ‘SendMail’ içerisinde gerçekleştirdik. Metodlardakı sorumlulukları ayırarak SRP’yi gerçekleştirmiş olsak dahi class’ın içerisinde birden çok tanımlamamız SRP’ye aykırı bir durumdur. Bundan dolayı class içerisindeki sorumlulukları’da ayırmamız gerekmektedir.

namespace Solid
{
public class Mailler
{
void SendMail()
{
if (ValidateMail("mail"))
{
//operations
}
}
bool ValidateMail(string mail)
{
//operations
return true;
}
}
}
Örneğimizin devamın ise class içerisindeki sorumluluklarıda ayırarak iki farklı class oluşturmuş olduk. ‘Mailler’ ve ‘Validation’ isimli class’ları ve içlerindeki metodlar yalnızca tek bir sorumluğa sahipler. Bu şekilde SRP’ye bağlı kalmış olduk.

namespace Solid
{
public class Mailler
{
Validation validation = new Validation();
void SendMail()
{
if (validation.ValidateMail("mail"))
{
//operations
}
}
}
public class Validation
{
public bool ValidateMail(string mail)
{
//operations
return true;
}
}
}