دیزاین پترن Proxy از دسته ساختاری در مجموعه ۲۳ پترن مشهور Gang of Four است. کنترل دسترسی به آبجکت اصلی را از طریق یک نماینده انجام میدهد.
سناریوی واقعی در فروشگاه
پراکسی گزارش فروش پیش از اجرای Query سنگین، مجوز مدیر را بررسی و نتیجه را Cache میکند.
نمونه در PHP
final class AuthorizedReportProxy implements ReportService {
public function __construct(private ReportService $inner) {}
public function get(): array {
Gate::authorize('reports.view');
return $this->inner->get();
}
}
نمونه در پایتون
class AuthorizedReportProxy:
def __init__(self, report, access):
self.report, self.access = report, access
def get(self):
if not self.access.can_view_reports(): raise PermissionError()
return self.report.get()
چه زمانی مناسب نیست؟
پراکسی جایگزین Authorization اصلی در Backend نیست و میتواند سربار و پیچیدگی ایجاد کند.
برای شناخت جایگاه این پترن در سه دسته اصلی، دیزاین پترن را ببینید. مقاله دیزاین پترن باورژن و دوره آموزشی باورژن نیز منابع مرتبطاند.