الگوی طراحی Proxy در جاوا

الگوی طراحی Proxy یکی از الگوهای طراحی ساختارمند در شئ گرایی است که در واقع یکی از ساده ترین الگوها هم هست.

 

 الگوی طراحی Proxy چیست؟

مقصود الگوی طراحی Proxy ارائه جانشین و واسطه ای برای دسترسی به یک شئ دیگر است تا کنترل آن شئ به این شکل انجام شود.

همین تعریف به اندازه کافی شفاف است و می تواند نامگذاری Proxy را برای این الگوی طراحی توجیه کند. در واقع زمانی که ما میخواهیم دسترسی مشخص و کنترل شده ای از شئ ساخته شده از یک کلاس دیگر را ارائه بدهیم، به سراغ الگوی Proxy می رویم.

بیایید تصور کنیم که یک کلاس داریم که می تواند دستوراتی را روی خط فرمان سیستم عامل اجرا کند. حال اگر ما خودمان به تنهایی از این قابلیت استفاده کنیم مشکلی نیست، چرا که مدیر سیستم هستیم؛ ولی اگر این برنامه را بدون هیچ کنترل خاصی رو دسترسی و اجرا به مشتری بدهیم، می تواند مشکلاتی ایجاد کند.

بدون اعمال کنترل دسترسی به کلاس مذکور، به طور مثال مشکلاتی از قبیل دسترسی مشتری به فایل های اصلی سیستم و توانایی ارسال دستور حذف آنها رخ می دهد که نتیجه آن از کار افتادن سیستم است.

پس یک کلاس واسط یا Proxy برای ارائه دسترسی کنترل شده به عنوان واسط کلاس اصلی می سازیم.

پیاده سازی الگوی طراحی  Proxy

کلاس های متفاوتی برای پیاده سازی مثال نیاز داریم که به ترتیب می سازیم. اول از همه به سراغ کلاس اصلی اجرا کننده دستورات خط فرمان می رویم. در ضمن پیاده سازی را با زبان جاوا انجام می دهیم.

الگوی طراحی  Proxy – کلاس اصلی

پیاده سازی را با تعریف یک interface شروع می کنیم و سپس تعریف آن را در کلاس بعدی کامل می کنیم.

فایل CommandExecutor.java :

 

فایل CommandExecutorImpl.java :

 

الگوی طراحی  Proxy – کلاس واسط

حالا می خواهیم کاری کنیم که تنها کاربر مدیر یا همان admin دسترسی کامل به کلاس بالایی برای اجرای همه دستورات را داشته باشد. اگر کاربر وارد شده مدیر نیست، فقط دستورات محدودی را مجاز است که اجرا کند.

اینجا پیاده سازی ساده ما از کلاس Proxy را می بینید که الگوی خوبی برای طراحی های پیچیده تر شماست:

 

فایل CommandExecutorProxy.java :

 

الگوی طراحی  Proxy – برنامه کاربردی مشتری

حالا باید برنامه ای که مشتری دارد را به شکلی بنویسیم که مشخصات کاربری را برای احراز هویت و ورود بگیرد و به کلاس Proxy دهد تا در شئ کلاس Proxy نوع کاربر و مجوز مشخص شود.

همچنین بتواند دستورات را بگیرد و برای اجرا به همان شئ کلاس Proxy تحویل دهید تا در صورت مجاز بودن، در کلاس اصلی یعنی CommandExecutorImpl ، اجرا شود.

 

فایل ProxyPatternTest.java :

خروجی اجرای همه کدهای بالا به شکل زیر است:

جمع بندی

این مثالی از مفهوم الگوی طراحی Proxy بود. امیدوارم برای شما مفید بوده باشد.  الگوی طراحی Proxy معمولاً برای کنترل دسترسی یا ارائه کلاس پوششی برای کارایی بهتر، استفاده می شود.

برای مثال بسته Java RMI از الگوی طراحی Proxy استفاده می کند.

 

 

منبع انتشار این آموزش، مطلبی با عنوان Proxy Design Pattern بوده است.

 

 

نظرتان را برای ما بنویسید

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