معجزه Singleton نویسی در فلاتر


تصویر با مفهوم تری پیدا نکردم راستیتش
تصویر با مفهوم تری پیدا نکردم راستیتش



سلام برا بکس

در صنعت دیزاین پترن یک مفهومی داریم به نام سینگلتُن ، عرضم به خدمت عزیز مبارکتون که ما توسعه دهنده ها اغلب آگاهانه یا ناآگاهانه داریم از بعضی از مفاهیم دیزاین پترن استفاده میکنیم مثل : کلاس ها ، وراثت ، چند ریختی و الا آخر .... و حالا سینگلتون چی هست:

شاید تابحال براتون پیش اومده باشه که بخواین یک متغیر سراسری بسازید که همه جای برنامه باشما باشه و از حافظه خارج نشه ... حالا فرض کنید این متغیر یک کلاس هستش بهمراه تمامی مقادیری که شما در ابتدای برنامه مقداردهی کردید و میخواید در هرجای برنامه از اون کلاس استفاده کنید وحتی مقادیرش رو تغییر بدید....

دارا دارام....

این شما و این Singleton

سریع میرم برای مثال :

یک کلاس singleton در فایلی به نام مثلا testSingleton.dart ایجاد میکنیم به شرح زیر:

```

library myCar;

final Car myCar = new Car._private();

class Car {
   int wheels = 4;
   String model = &quotperiad&quot
   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(&quotoriginal car wheels : ${myCar.wheels}&quot);
  myCar.wheels =  6;
 print(&quotedited car wheels : ${myCar.wheels}&quot);
}
.
.
.


و اما خروجی :

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(&quotWelcome to page2&quot);
  print(&quotcar wheels : ${myCar.wheels}&quot);
}
.
.
.

خروجی بعد از رفتن به Page2 :

Welcome to page2
car wheels : 6



کُلام آخر:

به همین راحتی شما یک singleton نوشتید و با کاربردش هم آشنا شدید ... البته در فلاتر شما یاد میگیرید که از پلاگین های مدیریت داده مثل provider و bloc برای مدیریت داده هاتون بهره ببرید که خیلی امکانات بیش ازین ها داره که خود این پلاگین ها هم از مفاهیم دیزاین پترن با قدرت استفاده میبره ولی خب شاید بعضیا دوست داشته باشن ساده کار کنن که دونستن این مفاهیم میتونه خیلی کارشون رو راحت کنه.


منتظر نظر های گرمتون هستم


یا علی.