backend developer | telegram : @ali256reza
دیزاین پترن ها - Proxy Design Pattern
برای اقدام کردن در هر زمینه ای حجم زیادی از داده ها وجود داره که برای انجام یک سری کار مشخص ما فقط به اندکی از اون داده ها نیاز داریم و با سایر اون ها ممکنه هیچوقت درگیر نشیم ...
برای نابرنامهنویس ۸۰ ساله
توی این بخش مسئله رو قرار هست به ساده ترین شکل ممکن توضیح بدم که حتی شخصی که برنامه نویس نیست و ۸۰ سال سن داره هم متوجه مفهوم محتوا بشه
فرض کن وارد یک دعوای حقوقی شدی ولی هیچ اطلاعاتی از شیوه انجام امور حقوقی نداری پس یک منبع برای یادگرفتن قانون پیدا می کنی.
وقتی شروع به خوندن می کنی با حجم زیادی از اصطلاحات تخصصی و قوانین متعددی که خیلی از اون ها به کارت نمیاد میشی.
برای حل کردن این مشکل نیاز به یک وکیل (همون proxy ما) داری که با پیچیدگی های قانون آشنایی داره و اصطلاحات تخصصی مورد نیاز رو بلده.
شما فقط برای مواردی که با اون ها درگیر هستی، از وکیلت کمک می خوای و دیگه با پیچ و خم قوانین مستقیما درگیر نمیشی.
از دیزاین پترن proxy چه زمانی استفاده میشه؟
دیزاین پترن proxy کلاسی جایگزین برای استفاده از یک منبع خارجی ارائه میدهد و دسترسی را به منبع اصلی کنترل می کند
برای مثال از کتابخانه ای برای ارتباط با فایل سیستم استفاده می کنی و متد های متعددی برای استفاده وجود داره ولی در برنامه شما فقط به خواندن، نوشتن و حذف کردن فایل ها نیاز داری در این صورت یک کلاس FileSystem ایجاد می کنی و داخل اون سه متد با نام های read, create, delete تعریف می کنی
و داخل هر کدوم از این متد ها، متد های کتابخانه اصلی رو فراخوانی می کنی و دیگه همه جا توی برنامه بجای استفاده مستقیم از کتابخانه از کلاس FileSystem که پروکسی ما هست استفاده می کنی.
مزایای پیاده سازی این دیزاین پترن:
- فقط متد هایی که مورد نیاز هستند ارائه می شوند
- می توانید عملیات هایی برای قبل یا بعد از اجرای عملیات اصلی در نظر بگیرید
- می توانید نوع یا ساختار نتیجه متد اصلی را تغییر دهید
- سایر توسعه دهندگان نیازی به آشنایی با کتابخانه مورد استفاده شما ندارند و فقط از متد های شما استفاده می کنند
امیدوارم مفید بوده باشه
- علیرضا تاجی
مطلبی دیگر از این انتشارات
Clean Code: DRY & YAGNI
مطلبی دیگر از این انتشارات
نکات امنیتی که حین توسعه حتما باید رعایت کنید
بر اساس علایق شما
چطور بهتر و عمیق تر زندگی کنیم؟