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