# هدف
برای کنترل دسترسی به اشیاء، نماینده یا نگهدارندهای برای آنها ارائه میکند.
- Proxy: به شیء واقعی اشاره دارد، هر گاه درخواستی ارسال شود، شیء واقعی را صدا میزند.
- Subject: یک واسط مشترک برای RealSubject و Proxy تعریف میکند.
- RealSubject: شیء واقعی را تعریف میکند.
زمانی از این الگو استفاده کنید که
- پراکسی دور (Remote Proxy): نیاز به بازنمایی محلی یک شیء دور که در فضای آدرس دیگری قرار دارد، دارید.
- پراکسی مجازی (Virtual Proxy): نیاز به ارائهٔ روشی برای ساخت اشیاء هزینهبر، به صورت بنا-به-درخواست (on-demand) هستید.
- پراکسی محافظ (Protection Proxy): نیاز به کنترل دسترسی به اشیاء دارید.
- اشارهگر هوشمند (Smart Reference): اقدامات اضافی تنها زمانی باید اجرا شوند که شیء دستیابی شود.
فرض کنید یک ویرایشگر تصویر دارید، و تصاویر حجم بالایی دارند. کاربر چندین تصویر را همزمان برای باز شدن در ویرایشگر انتخاب میکند، به خاطر اینکه در هنگام باز شدن ویرایشگر لازم نیست که تمام عکسها در حافظه بار شوند، میتوانیم بار شدن عکسها در حافظه را تا زمانی که نیاز واقعی به تصاویر نداریم به معوق کنیم.
- java.lang.reflect.Proxy
- java.rmi.*, the whole API actually.