در زبان دارت named constructor یک نوع constructor است که به شما اجازه میدهد یک شیء با نام ورودی خاص بسازید. به عبارت دیگر، named constructor یک روش برای ساخت شیء با مقادیر پیشفرض مشخص است.
برای ساخت named constructor در دارت، به کافی است که یک متد با نام مشخص و با کلمه کلیدی factory
بسازید. به عنوان مثال، فرض کنید شما یک کلاس Person
دارید که دارای دو ویژگی name
و age
است. به صورت پیشفرض، named constructor همیشه باید با factory
شروع شود. برای ساخت named constructor در کلاس Person
، میتوانید کد زیر را ایجاد کنید:
class Person {
String name;
int age;
Person(this.name, this.age);
factory Person.fromName(String name) {
return Person(name, 0);
}
}
در کد بالا، Person.fromName
یک named constructor است که شیء Person
با یک نام و سن صفر برمیگرداند. برای استفاده از named constructor در دارت، میتوانید به شکل زیر عمل کنید:
Person person1 = Person('ٍErfan', 25);
Person person2 = Person.fromName('Reza');
در کد بالا، person1
یک شیء Person
با نام “Erfan” و سن ۲۵ است، و person2
یک شیء Person
با نام “Reza” و سن صفر است که با استفاده از named constructor Person.fromName
ساخته شده است.
با استفاده از named constructor در دارت، میتوانید کد خود را کمی سادهتر و خواناتر کنید و از قابلیتهای کاربردی آن بهرهمند شوید.
همچنین از named constructor ها میتوان برای ایجاد چندین نوع شیء با ورودیهای متفاوت استفاده کرد. به عنوان مثال، فرض کنید شما یک کلاس Rectangle
دارید که دارای دو ویژگی width
و height
است. میتوانید با استفاده از named constructor های مختلف، چندین نوع شیء Rectangle
با ویژگیهای متفاوت ایجاد کنید. به شکل زیر میتوانید named constructor های مختلف را برای کلاس Rectangle
بسازید:
class Rectangle {
double width;
double height;
Rectangle(this.width, this.height);
factory Rectangle.square(double side) {
return Rectangle(side, side);
}
factory Rectangle.fromArea(double area) {
final side = sqrt(area);
return Rectangle(side, side);
}
}
در کد بالا، Rectangle.square
یک named constructor است که یک مربع با طول لبهی مشخص ساخته و بازگشت آن را به عنوان یک شیء Rectangle
ارائه میدهد. همچنین، Rectangle.fromArea
یک named constructor است که با توجه به مساحت موردنظر، طول و عرض را محاسبه کرده و یک شیء Rectangle
با مقادیر محاسبهشده را برمیگرداند.
با استفاده از named constructor های مختلف، میتوانید کد خود را خواناتر و قابلفهمتر کنید و در عین حال، به راحتی شیهای مختلف با ویژگیهای متفاوت را ایجاد کنید.
باید توجه داشت که named constructor ها در دارت تنها یک نوع constructor هستند و مانند constructor های دیگر، باید در صفحهی اصلی کلاس تعریف شوند. همچنین برای صدا کردن named constructor ها، باید نام آنها را با نام کلاس پیشوندی کنید.
با استفاده از named constructor ها میتوانید کد خود را خواناتر و قابلفهمتر کنید و در عین حال، به راحتی شیهای مختلف با ویژگیهای متفاوت را ایجاد کنید.
همچنین، برای استفاده از named constructor ها در کد، میتوانید به شکل زیر عمل کنید:
Rectangle square = Rectangle.square(5);
Rectangle rectangle = Rectangle.fromArea(20);
در کد بالا، Rectangle.square(5)
یک شیء Rectangle
با طول و عرض ۵ سانتیمتر ایجاد میکند و آن را به square
اختصاص میدهد. همچنین، Rectangle.fromArea(20)
یک شیء Rectangle
با مساحت ۲۰ مترمربع ایجاد کرده و آن را به rectangle
اختصاص میدهد.
میتوانید named constructor های مختلفی را برای کلاسهای مختلف تعریف کنید و از آنها در سراسر کد خود استفاده کنید. همچنین میتوانید named constructor هایی را که ورودیهای آنها یکسان است با constructor های پیشفرض جایگزین کنید تا کدتان را سادهتر کنید.
بنابراین named constructor ها در دارت یکی از روشهای ساخت شیهایی با ویژگیهای متفاوت هستند و با استفاده از آنها میتوانید کد خود را سادهتر و قابلفهمتر کنید.