Junior — Middle
Можете ли да дадете пример, когато принципът за единствена отговорност е нарушен в кода?
sobes.tech AI
Отговор от AI
Принципът за единствена отговорност (Single Responsibility Principle, SRP) гласи, че един клас или модул трябва да има само една причина за промяна, тоест да отговаря за една конкретна задача.
Пример за нарушение на SRP в Android:
public class UserProfileActivity extends AppCompatActivity {
// Отговаря както за UI, така и за зареждане на данни и запазване на настройки
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_profile);
// Зареждане на данни за потребителя от мрежата
loadUserData();
// Обработка на натискане на бутона за запазване
findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
}
private void loadUserData() {
// Мрежова операция
}
private void saveUserSettings() {
// Запазване на настройки
}
}
Тук UserProfileActivity отговаря едновременно за показване на UI, зареждане на данни и запазване на настройки — това нарушава SRP. По-добре е тези отговорности да се разделят в различни класове, например, да се използва ViewModel за бизнес логиката и отделен клас за работа с мрежата.