Tek Sorumluluk İlkesi "bir sınıfın değişimin bir nedeni olması gerektiğini" belirtir.
MVC modelinde, Kontrolcünün işi Görünüm ve Model arasında aracılık etmektir. Kullanıcı tarafından GUI üzerinde yapılan eylemleri rapor etmek için Görünüm için bir arayüz sunar (örneğin, Görünüm'ün çağrı yapmasına izin vermek controller.specificButtonPressed()
) ve verilerini değiştirmek veya işlemlerini başlatmak için Model üzerinde uygun yöntemleri çağırabilir (örn. model.doSomething()
) .
Bunun anlamı şudur ki:
- Denetleyiciye, kullanıcı işlemlerini bildirmek üzere uygun bir arabirim göstermesi için GUI hakkında bilgi sahibi olması gerekir.
- Ayrıca Model üzerinde uygun yöntemleri çağırabilmek için Modeldeki mantık hakkında bilgi sahibi olmak gerekir.
Bunun iki değişik nedeni olduğu anlamına gelir : GUI'de bir değişiklik ve iş mantığında bir değişiklik.
GUI değişirse, örneğin yeni bir düğme eklenirse, Kontrolörün Görünüm'ün bir kullanıcıyı rapor etmesine izin vermek için yeni bir yöntem eklemesi gerekebilir.
Modeldeki iş mantığı değişirse, Model üzerinde doğru yöntemleri çağırmak için Kontrolörün değişmesi gerekebilir.
Bu nedenle, Denetleyicinin değiştirmek için iki olası nedeni vardır . SRP'yi bozuyor mu?