singleton_implementation_-_uml_class_diagram

کار با الگوی singleton در سی پلاس پلاس

سلام دوستان امیدوارم حال همتون خوب باشه 🙂

قصد دارم الگوی singleton بهتون آموزش بدم اصلا singleton چیه! و چه کاربردی داره! گاهی اوقات ما لازم دایم از یک کلاس فقط یک نمونه بسازیم و جلوگیری کنیم از ساختن دو یا چند نمونه از class اینجاست که الگوی singleton میاد به کمکمون. درواقع این الگو بهمون این اطمینان میده. که جلوگیری کنیم از ساختن دو یا چند نمونه جدید.

singleton_implementation_-_uml_class_diagram

 

 

 

 

 

 

 

 

شکل فوق: شکل کلاس دیاگرام الگوی singleton

خووب بریم سروقت پیاده سازی براساس کلاس دیاگرام. ابتدا یک کلاس ایجاد میکنیم متغیر ها رفتارها و سازنده هارو مینویسیم، میدان دید سازنده رو خصوصی میکنیم و یک متغیر از نوع خود کلاس ایجاد میکنیم و اشاره گر رو به سمتش هدف میگیریم و میدان دیدشم خصوصی میکنیم  و یک رفتار از نوع خود کلاس همراه با اشاره گره مینوسیم، کلمه کلیدی “static” بیانگر اینه که شما میتونید بدون ساختن نمونه به اون متغیر یا رفتار مورد نظر دسترسی داشته باشیم خوب اینم کد طبق توضیحاتی که دادیم

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

کد کاملش به این صورته

میریم به سراغ تابع main

خوب در قدم اول میریم متغییر که از خود کلاس نوشتیم بصورت عمومی مورد هدف قرار میدم و مقدار آن را Null میذاریم بیرون از تابع Main مینویسیم

حالا وقت نمونه ساختنه در تابع Main

ابتدا یک نمونه که حالت اشار گر به خودش داره مینوسیم و مقدار اون رو برابر متدی که در کلاس singleton وجود داره میذاریم اگه اینکارو انجام ندیم بصورت خودار کامپایلر جلوگیری میکنه و در آخر میتونیم این متغیر به نمونه های جدید بدهیم ولی همشون به یکه نقطه از حافظه دسترسی دارن

خوووووووووووووووووووووووووووب در آخر اینم کدش

در نهایت خروجی برنامه
screenshot

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *