Junior — Middle
Ar galėtumėte pateikti pavyzdį, kada vienos atsakomybės principas yra pažeidžiamas kode?
sobes.tech AI
Atsakymas iš AI
Vienos atsakomybės principas (Single Responsibility Principle, SRP) teigia, kad klasė ar modulis turėtų turėti tik vieną priežastį keistis, tai yra būti atsakingas už vieną konkretų uždavinį.
Pavyzdys, kaip pažeisti SRP Android:
public class UserProfileActivity extends AppCompatActivity {
// Atsakingas tiek už UI, tiek už duomenų įkėlimą ir nustatymų išsaugojimą
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_profile);
// Vartotojo duomenų įkėlimas iš tinklo
loadUserData();
// Mygtuko išsaugoti paspaudimo apdorojimas
findViewById(R.id.saveButton).setOnClickListener(v -> saveUserSettings());
}
private void loadUserData() {
// Tinklo operacija
}
private void saveUserSettings() {
// Nustatymų išsaugojimas
}
}
Čia UserProfileActivity atsakinga tiek už UI rodymą, tiek duomenų įkėlimą ir nustatymų išsaugojimą — tai pažeidžia SRP. Geriau šias atsakomybes padalinti į skirtingus klases, pavyzdžiui, naudoti ViewModel verslo logikai ir atskirą klasę darbui su tinklu.