Sobes.tech
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 և առանձին դաս՝ ցանցային աշխատանքների համար։