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 для бизнес-логики и отдельный класс для работы с сетью.