Sobes.tech
Junior
362

Dart тілінде әртүрлі конструктор түрлері не үшін пайдаланылады?

AI-дан жауап

sobes.tech AI

Dart-те әртүрлі конструкторлар түрлері объектіні инициализациялау, икемділік пен нақты мақсатты көрсету үшін пайдаланылады. Негізгі түрлері:

  • Әдепкі конструктор (аталмаған):

    • Объектіні қарапайым құру үшін қолданылады.
    • Міндетті немесе қосымша (аталмаған немесе аталған) параметрлер болуы мүмкін.
    class MyClass {
      String name;
    
      // Әдепкі конструктор
      MyClass(this.name); 
    }
    
  • Аталған конструктор:

    • Бірнеше тәсілмен объект құруға мүмкіндік береді, әрқайсысының өз аты бар.
    • Әртүрлі дереккөздерден немесе түрлі жағдайларда объект құру үшін пайдалы.
    class MyClass {
      String name;
      int age;
    
      MyClass(this.name, this.age);
    
      // Аталған конструктор 
      MyClass.fromMap(Map<String, dynamic> map) {
        name = map['name'];
        age = map['age'];
      }
    }
    
  • Фабрика конструкторы:

    • Жаңа экземплярды тікелей құрып жатқан жоқ.
    • Бар экземплярды, ұрпақ классты немесе фабрика әдісі арқылы жасалған экземплярды қайтаруы мүмкін.
    • Жобалау үлгілерін жүзеге асыру, кэштеу немесе түрлі типтерді қайтару үшін пайдаланылады.
    class Logger {
      static final Map<String, Logger> _cache = <String, Logger>{};
    
      // Фабрика конструкторы
      factory Logger(String name) {
        if (_cache.containsKey(name)) {
          return _cache[name]!;
        } else {
          final logger = Logger._internal(name); // Жеке конструкторды шақыру
          _cache[name] = logger;
          return logger;
        }
      }
    
      // Жеке аталған конструктор
      Logger._internal(this.name); 
    
      final String name;
    
      void log(String message) {
        print('[$name] $message');
      }
    }
    
  • Констант конструктор:

    • Константты экземплярды құрады.
    • Барлық өрістер final болуы керек.
    • Бұл иммутабельді объектілерді компиляция кезінде құруға мүмкіндік береді, өнімділікті арттырады және Dart-қа қосымша оңтайландырулар жүргізуге мүмкіндік береді.
    class Point {
      final double x;
      final double y;
    
      // Констант конструктор
      const Point(this.x, this.y); 
    }
    

Әр түрлі конструктор түрлерін пайдалану Dart-те экспрессивті, икемді және жоғары өнімді код құруға мүмкіндік береді.