Junior
Dart dilində müxtəlif növ konstruktorlar nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Dart-da, müxtəlif növ konstruktorlar aşağıdakılar üçün istifadə olunur:
- Obyektlərin başlanğıc vəziyyətə gətirilməsi: Sinifin sahələrinin başlanğıc dəyərlərini qurarkən.
- İstifadə üçün çevikliyi: Ehtiyaclara uyğun olaraq obyektin yaradılmasının müxtəlif yollarını təmin etmək (mütləq və ya könüllü parametrlər, fabrik vasitəsilə yaradılma və s.).
- Niyyətin aydınlığı: Müəyyən bir obyekt yaradılma üsulunu təsvir etmək üçün adlandırılmış konstruktorlardan istifadə etmək.
Əsas konstruktor növləri:
-
Varsayılan konstruktor (adlandırılmamış konstruktor):
- Sadə obyekt yaratmaq üçün istifadə olunur.
- Mütləq və ya könüllü (adlandırılmış və ya mövqeli) parametrlərə sahib ola bilər.
class MyClass { String name; // Varsayılan konstruktor MyClass(this.name); } -
Adlandırılmış konstruktor:
- Bir neçə obyekt yaratma üsuluna malik olmaq imkanı verir, hər biri özünəməxsus adı ilə.
- Müxtəlif mənbələrdən və ya müxtəlif vəziyyətlərdə obyekt yaratmaq lazım olduqda faydalıdır.
class MyClass { String name; int age; MyClass(this.name, this.age); // Adlandırılmış konstruktor MyClass.fromMap(Map<String, dynamic> map) { name = map['name']; age = map['age']; } } -
Fabrika konstruktoru:
- Birbaşa yeni nümunə yaratmır.
- Mövcud nümunəni, alt sinfi və ya fabrik metodunda yaradılmış nümunəni qaytara bilər.
- Dizayn nümunələrinin, obyektlərin keşi və ya müxtəlif alt tiplərin qaytarılması üçün istifadə olunur.
class Logger { static final Map<String, Logger> _cache = <String, Logger>{}; // Fabrika konstruktoru factory Logger(String name) { if (_cache.containsKey(name)) { return _cache[name]!; } else { final logger = Logger._internal(name); // Özəl konstruktoru çağırır _cache[name] = logger; return logger; } } // Daxili istifadə üçün özəl adlandırılmış konstruktor Logger._internal(this.name); final String name; void log(String message) { print('[$name] $message'); } } -
Sabit konstruktor:
- Sabit nümunələr yaradır.
- Bütün sahələr
finalolmalıdır. - Kompilyasiya zamanı dəyişməz obyektlər yaratmaq üçün istifadə olunur, bu performansı artırır və Dart-ın daha çox optimallaşdırma etməsinə imkan verir.
class Point { final double x; final double y; // Sabit konstruktor const Point(this.x, this.y); }
Fərqli konstruktor tiplərinin istifadəsi Dart-da daha ifadəli, çevik və səmərəli kod yaratmağa imkan verir.