Singleton چیست ؟
سلام دوستان عزیز در این قسمت از مقالات وب سایت به بررسی Singleton چیست ؟ می پردازیم هدف اصلی معماری سینگلتون جلوگیری از ساخت بیش از حد از یک کلاس است همانطور که متوجه شدید Singleton نوعی Design pattern است که در میان برنامه نویسان اندروید فوق العاده آشنا و کاربردی است در ادامه با ما همراه باشید تا بیشتر با الگوی طراحی Singleton آشنا شوید.
Singleton چیست ؟
هدف اصلی کلاس Singelton کنترل instance یا نمونه ساخته شده از کلاس یا شئی است و Singelton محدودیت ساخت فقط یک شئی است و در کل برنامه استفاده از آن شئی امکان پذیر است کلی ویژگی های خوب این کلاس به شما ارائه می کند که در ادامه آنها را بررسی می کنیم.ویژگی های کلاس Singleton چیست ؟- الگوی طراحی Singleton ساده ترین Design pattern است که شما می توانید به راحتی آن را یاد گیرید و برپایه ی Creational Design Pattern است.
- کلاس Singleton وظیفه دارد که خودش را به صورت فوری مقدار دهی کند تا فقط یکبار ایجاد شود.
- کلاس Singleton یک کلاس Global است که تمامی کلاس های دیگر به آن دسترسی دارند.
- یک نمونه که همه جا امکان استفاده از آن وجود دارد.
هدف سینگلتون چیست ؟
لحظه به لحظه کلاس را محدود کنید و اطمینان حاصل کنید که فقط یک نمونه از کلاس در JVM وجود دارد.
دو مثال ساده از Singleton
در نظر بگیرید نرم افزار شما به میزان زیادی در بخش های مختلف نیاز به درخواست به api دارد اگر در نظر بگیریم کتابخانه Volley را برای انجام در خواست های api استفاده کرده باشیم هربار نیاز داریم این کلاس را در اکتیویتی ها یا فرگمنت های مختلف صدا بزنیم و این باعث هدر رفتن memory و در بعضی موارد باعث memory leak می شود پس بهتر است از این کلاس یک Singleton ایجاد می شود و از آن در بخش های مختلف استفاده می شود.در نظر بگیرید نرم افزار شما به میزان زیادی نیاز به query گرفتن از دیتابیس Sqlite دارد و شما هربار که بخواهید از دیتابیس استفاده کنید لازم دارید از کلاس آن یک شئی ایجاد کنید و باعث هدر رفتن حافظه می شود پس بهتر است آن را در Singleton تعریف و استفاده کنید تا فقط یکبار ایجاد شود و در همه جا استفاده شود.چه زمانی از Singleton استفاده کنیم ؟
- زمانی که کلاس شامل property نیست مثل Validation ها و کلاس های تبدیل
- برای دیتابیس , Network Request , Logger و…
- برای ساخت پیکر بندی (مثل فونت و تنظیمات )
- برای caching و Thearding