În OOP (programarea orientată pe obiecte) este important de reținut De ce construiți o aplicație cu obiecte în loc de simple funcții (programare procedurală). Uneori, programatorii vor trata obiectele mai mult ca niște funcții, ceea ce învinge complet scopul obiectelor în primul rând! Scopul acestei postări este de a explora beneficiile reale ale OOP și cum să vă structurați modelele în mod corespunzător.
Ce este un obiect decuplat?
Spre deosebire de credința programatorului OOP începător, un obiect este mult mai mult decât o colecție de membri de date și metode aferente. Este important să ne amintim că un obiect încorporează date și metode care se referă numai la el însuși. Termenul „decuplare” este folosit pentru a identifica separarea blocurilor software care nu ar trebui să depindă unele de altele.
De ce este important să decuplăm obiectele?
Să spunem că avem un Mașină Clasă cu metodele conduce înainte(), Stop(), intoarce(), claxon ()și changeLanes(). Acest obiect are un design slab deoarece una dintre metode, schimba benzile(), ar putea depinde de a Stradă clasă. Ce se întâmplă dacă ai încerca să refolosești această clasă pentru o mașină care circulă numai în teren? În acest caz, schimba benzi() metoda este complet lipsită de sens pentru instanțierea obiectului dvs. În plus, dacă intoarce() metoda a fost de a face referire la schimba benzi() metoda, întregul obiect ar începe să pară prea specific pentru a instanția și a funcționa cu o mașină de teren. În plus, dacă se face o modificare la Stradă clasa, este foarte probabil ca Mașină va trebui modificată și clasa. De cand Mașină are o metodă care depinde de un alt obiect, despre acest obiect se spune că este „cuplat” (care este ceea ce încercăm să evităm).
Cum să decuplăm obiectele
Pentru a crea ceea ce eu numesc „obiecte purificate”, trebuie să le decuplăm complet în așa fel încât toate câmpurile și metodele lor să fie specifice ceea ce poate face obiectul în orice circumstanță. Pentru a decupla Mașină clasa, ați dori să mutați schimba benzi() metoda către un alt obiect cu care interacționează Mașină, ca CityDriving. Acest nou obiect acționează ca un mediator deoarece folosește Mașină clasa pentru circumstanțe speciale, fără a-i afecta definiția pură.
Când vă proiectați modelele de obiecte, întrebați-vă „aceste obiecte sunt purificate? Sunt decuplate?” Dacă în mod religios vă puneți această întrebare atunci când creați obiecte noi, nu numai că veți ajunge să creați un cod mult mai curat, ci veți petrece și mai puțin timp refactorizând. Noroc!