Senior
Standart kitabxanalarda 'SOLID' prinsiplərinin pozulmasına nümunələr verin.
sobes.tech Süni İntellekt
AI-dan cavab
Apple-ın çox standart kitabxanalarında SOLID prinsipləri yüksək səviyyədə yerinə yetirilir. Ancaq, onların tətbiqində o qədər də sərt olmayan və ya istisnalar olan nümunələr tapmaq mümkündür:
- Yeganə məsuliyyət prinsipi (SRP): UIKit və ya Foundation içində bəzi sinflər bir neçə əlaqəsiz vəzifəni yerinə yetirir. Məsələn,
UIViewControlleryalnız görünüşlərin idarə olunması ilə deyil, həm də məlumatların işlənməsi, naviqasiya və s. ilə məşğul ola bilər. - Açıq/qapalı prinsipi (OCP): Bəzi standart sinflərin funksionallığını genişləndirmək bəzən sinfi özündə dəyişdirməyi tələb edir, onun alt sinfini yaratmaq və ya protokol istifadə etmək yerinə. Məsələn, mövcud
UITableViewDataSource-a yeni funksionallıq əlavə etmək, onun bəzi davranışlarını asanlıqla dəyişdirmək imkanını məhdudlaşdıra bilər. - Liskov yerinə qoyma prinsipi (LSP): Bəzi sinif hierarhiyalarında, məsələn, jestlərin işlənməsi (
UIGestureRecognizervə onun alt sinifləri), baz sinfi alt sinfi ilə əvəz etmək hər zaman mümkün olmaya bilər, çünki bu, tətbiqin davranışını dəyişə bilər. - İnterfeysların ayrılması prinsipi (ISP): Standart kitabxanalardakı bəzi protokollar çox sayda metod ehtiva edə bilər və bunların hamısı bütün sinflər üçün lazım olmaya bilər. Məsələn,
UITableViewDelegateprotokolu çox sayda seçimli metoda malikdir. - Asılılıqların tərs çevrilməsi prinsipi (DIP): Modern iOS inkişafında asılılıqların injeksiyası geniş istifadə olunsa da, bəzi köhnə framework hissələrində asılılıqlar sıx bağlı ola bilər, bu da test və komponentlərin dəyişdirilməsini çətinləşdirir.
Qeyd etmək lazımdır ki, bu "pozuntular" çox vaxt kompromislərdir, inkişaf tarixçəsi, performans və ya API-nin tipik ssenarilərdə istifadəsini sadələşdirmək üçün qəbul edilir. Əksər hallarda, standart kitabxanalar əsasında ağıllı tətbiq dizaynı SOLID prinsiplərinə riayət etməyə imkan verir.