Junior
Ինչու՞ Dart լեզվում օգտագործվում են տարբեր տեսակի կոնստրուկտորներ։
sobes.tech AI
Պատասխան 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']; } } -
Արտադրական (factory) կոնստրուկտոր:
- Կառուցված չէ անմիջապես նոր օրինակ՝ դասից:
- Վերադարձնում է գոյություն ունեցող օրինակ, ենթակլաս կամ ֆաբրիկային մեթոդով ստեղծված օրինակ:
- Օգտագործվում է նախագծման օրինակների, օբյեկտների կեշավորման կամ տարբեր ենթատիպերի վերադարձի համար:
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'); } } -
Հաստատուն (const) կոնստրուկտոր:
- Ստեղծում է հաստատուն օրինակներ՝ դասից:
- Բոլոր դաշտերը պետք է լինեն
final: - Օգտագործվում է անփոփոխ օբյեկտներ ստեղծելու համար՝ կոմպիլյացիայի ժամանակ, ինչը բարձրացնում է արդյունավետությունը և թույլ է տալիս Dart-ին կատարել լրացուցիչ օպտիմիզացիաներ:
class Point { final double x; final double y; // Հաստատուն կոնստրուկտոր const Point(this.x, this.y); }
Տարբեր տեսակի կոնստրուկտորների օգտագործումը թույլ է տալիս ավելի արտահայտիչ, ճկուն և արդյունավետ կոդ գրել Dart-ում։