Junior — Middle
Կոդում միանձնյա պատասխանատվության սկզբունքը երբ է խախտվում, կարող եք օրինակ բերել?
sobes.tech AI
Պատասխան AI-ից
Ենթադրության միակ պատասխանատվության սկզբունքը (Single Responsibility Principle, SRP) ասում է, որ դասը կամ մոդուլը պետք է ունենա միայն մեկ պատճառ փոփոխության համար, այսինքն՝ պատասխանատու լինել կոնկրետ մեկ գործառույթի համար:
Օրինակ՝ Android-ում SRP-ի խախտում:
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 և առանձին դաս՝ ցանցային աշխատանքների համար։