معجزه Singleton نویسی در فلاتر
سلام برا بکس
در صنعت دیزاین پترن یک مفهومی داریم به نام سینگلتُن ، عرضم به خدمت عزیز مبارکتون که ما توسعه دهنده ها اغلب آگاهانه یا ناآگاهانه داریم از بعضی از مفاهیم دیزاین پترن استفاده میکنیم مثل : کلاس ها ، وراثت ، چند ریختی و الا آخر .... و حالا سینگلتون چی هست:
شاید تابحال براتون پیش اومده باشه که بخواین یک متغیر سراسری بسازید که همه جای برنامه باشما باشه و از حافظه خارج نشه ... حالا فرض کنید این متغیر یک کلاس هستش بهمراه تمامی مقادیری که شما در ابتدای برنامه مقداردهی کردید و میخواید در هرجای برنامه از اون کلاس استفاده کنید وحتی مقادیرش رو تغییر بدید....
دارا دارام....
این شما و این Singleton
سریع میرم برای مثال :
یک کلاس singleton در فایلی به نام مثلا testSingleton.dart ایجاد میکنیم به شرح زیر:
```
library myCar;
final Car myCar = new Car._private();
class Car {
int wheels = 4;
String model = "periad"
Car._private() {
print('Car singleton has been creaed, this method call only once');
}
otherTestMethod() {
print('this is a test method');
}
}
حالا بیایم این کلاس رو در جای جای اپ مان فراخوانی کنیم و مقادیرش رو ویرایش کنیم ببینیم چی میشه..
مثلا در اسکرین MyHomePage با فراخوانی کردن نام متغیر نمونه گیری شده ی مثال قبل از کلاس سینگلتن استفاده میکنیم:
import './testSingleton.dart'
.
.
// MyHomePage.dart
@override
void initState() {
super.initState();
print("original car wheels : ${myCar.wheels}");
myCar.wheels = 6;
print("edited car wheels : ${myCar.wheels}");
}
.
.
.
و اما خروجی :
Car singleton has been creaed, this method call only once
original car wheels : 4
edited car wheels : 6
حالا بیایم یه دکمه بزاریم که مارو به صفحه دوم ببره و در صفحه دوم دوباره مقادیر رو چاپ میکنیم :
import './testSingleton.dart'
.
.
// Page2.dart
@override
void initState() {
super.initState();
print("Welcome to page2");
print("car wheels : ${myCar.wheels}");
}
.
.
.
خروجی بعد از رفتن به Page2 :
Welcome to page2
car wheels : 6
کُلام آخر:
به همین راحتی شما یک singleton نوشتید و با کاربردش هم آشنا شدید ... البته در فلاتر شما یاد میگیرید که از پلاگین های مدیریت داده مثل provider و bloc برای مدیریت داده هاتون بهره ببرید که خیلی امکانات بیش ازین ها داره که خود این پلاگین ها هم از مفاهیم دیزاین پترن با قدرت استفاده میبره ولی خب شاید بعضیا دوست داشته باشن ساده کار کنن که دونستن این مفاهیم میتونه خیلی کارشون رو راحت کنه.
منتظر نظر های گرمتون هستم
یا علی.
مطلبی دیگر از این انتشارات
معماری آینده دار Flux در فلاتر
مطلبی دیگر از این انتشارات
از سیر تا پیازِ BLoc
مطلبی دیگر از این انتشارات
مدیریت State و روش های آن در فلاتر