CodeGym /Kurslar /Frontend SELF AZ /Miksinlər və kompozisiya

Miksinlər və kompozisiya

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

11.1 Miksinlər

Miksinlər və kompozisiya, JavaScript-də kodun təşkil olunması və təkrar istifadə üçün güclü vasitələrdir. Onlar klassik irsi qəbul etməyə alternativ yanaşma təklif edərək çevik və modul sistemlər yaratmağa imkan verir.

Miksinlər — irsdən istifadə etmədən, siniflərə funksionallıq əlavə etmənin yoludur. Miksin — başqa siniflərə və ya obyektlərə kopyalana bilən metodlar və xüsusiyyətlər saxlayan obyektlərdir.

Miksinlərdən istifadə nümunəsi:

JavaScript
    
      const CanEat = {
        eat() {
          console.log('Yemək yeyir...');
        }
      };

      const CanWalk = {
        walk() {
          console.log('Gəzir...');
        }
      };

      class Person {
        constructor(name) {
          this.name = name;
        }
      }

      // Miksinlərdən metodları sinifin prototipinə kopyalayırıq
      Object.assign(Person.prototype, CanEat, CanWalk);

      const person = new Person('John');

      person.eat();  // Çıxış: Yemək yeyir...
      person.walk(); // Çıxış: Gəzir...
    
  

Miksinlərin üstünlükləri:

  1. Koddan təkrar istifadə: miksinlər ümumi metod və xüsusiyyətləri siniflər arasında asanlıqla bölüşdürməyə imkan verir.
  2. Çeviklik: hansı miksinlərin siniflərə tətbiq olunacağını seçmək, kodun daha çevik təşkil olunmasını təmin edir.
  3. İrsiyyət məhdudiyyətlərinin aradan qaldırılması: miksinlər, mürəkkəb irsiyyət iyerarxiyaları yaratmadan funksionallıq əlavə etməyə imkan verir.

Miksinlərin problemləri:

  1. Ad konfliktləri: bir neçə miksini birləşdirərkən metod və ya xüsusiyyət adlarının konfliktləri ola bilər.
  2. Strukturun qeyri-aydınlığı: miksinlər siniflərin strukturunu daha az aydın edə bilər, bu isə kodun dəstəyini çətinləşdirir.

11.2 Kompozisiya

Kompozisiya — obyektləri və ya funksiyaları birləşdirərək daha mürəkkəb davranış formalaşdırmaq üsuludur. Kompozisiya kiçik, müstəqil modullardan sistemlər qurmağa imkan verir, bu da kodun daha çevik və genişləndirilə bilən olmasını təmin edir.

Nümunə 1: Funksiyaların kompozisiyası

JavaScript
    
      function canEat(obj) {
        obj.eat = function() {
          console.log('Yemək yeyirəm...');
        };
      }

      function canWalk(obj) {
        obj.walk = function() {
          console.log('Gəzirəm...');
        };
      }

      function Person(name) {
        this.name = name;
      }

      const person = new Person('John');
      canEat(person);
      canWalk(person);

      person.eat();  // Çıxış edəcək: Yemək yeyirəm...
      person.walk(); // Çıxış edəcək: Gəzirəm...
    
  

Nümunə 2: Siniflərlə kompozisiya

JavaScript
    
      class CanEat {
        eat() {
          console.log('Yemək yeyirəm...');
        }
      }
      
      class CanWalk {
        walk() {
          console.log('Gəzirəm...');
        }
      }
      
      class Person {
        constructor(name) {
          this.name = name;
          // CanEat və CanWalk-dan nümunələr yaradırıq
          this.eater = new CanEat();
          this.walker = new CanWalk();
        }
      
        // Müvafiq nümunələrə metodları köçürürük
        eat() {
          this.eater.eat();
        }
      
        walk() {
          this.walker.walk();
        }
      }
      
      const person = new Person('John');
      
      person.eat();  // Çıxış edəcək: Yemək yeyirəm...
      person.walk(); // Çıxış edəcək: Gəzirəm...
    
  

Kompozisiyanın üstünlükləri:

  1. Çeviklik: kompozisiya müxtəlif davranış aspektlərini asanlıqla birləşdirməyə və onları müxtəlif kontekstlərdə istifadə etməyə imkan verir.
  2. Modulluq: kompozisiya kiçik, müstəqil modulların yaradılmasına kömək edir ki, bu da kodun test edilməsini və dəstəyini asanlaşdırır.
  3. İrsi məhdudiyyətlərin qarşısının alınması: kompozisiya dərin sinif iyerarxiyası və çoxsaylı varisliklə əlaqəli problemlərdən qaçınmağa imkan verir.

Kompozisiyanın problemləri:

  1. Reallaşdırma mürəkkəbliyi: kompozisiya funksionallığın birləşdirilməsi üçün daha mürəkkəb məntiq tələb edə bilər.
  2. Kod artıqlığı: bəzi hallarda kompozisiya metodların və xüsusiyyətlərin açıq şəkildə birləşdirilməsi lazım olduğuna görə kod artıqlığına səbəb ola bilər.

11.3 Mixin-lər və kompozisiyanın müqayisəsi

Mixin-lər:

  • Bir neçə class-a funksionallıq əlavə etmək üçün asan yoldur
  • Ad konfliktlərinə və strukturdakı qeyri-müəyyənliklərə səbəb ola bilər

Kompozisiya:

  • Daha çevik və modulardır
  • İrsi problemlərdən uzaq durur, amma implementasiya və dəstək bir az çətin ola bilər
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION