Proxy

GOF Intent:
Provide a surrogate or placeholder for another object to control access to it.

Proxy يک واسط بين Objectاصلي و Client است که مي تواند دسترسي به Object را کنترل کند يا امکانات ديگري به آن اضافه نمايد.
به عبارت ديگر Proxy بين Client و Object اصلي قرار مي گيرد و Client براي کار با Object اصلي ناچار است از Proxy عبور نمايد.

نام ديگر آن Surrogate است.

برخي کاربردهاي Proxy Pattern عبارتند از

  • کنترل دسترسي غيرمجاز به Object يا (Protection Proxy)
  • ايجاد يک لايه Abstract براي کار با API هاي پيچيده. مي توان پيچيدگي هاي API را در Proxy مديريت کرد و واسط ساده تري در اختيار Client گذاشت. (Virtual Proxy)
  • ايجاد واسط براي Remote Resouces از جمله Web Service ها (Remote Proxy)
  • Thread Safe نمودن يک Object بدون دست زدن به کد آن. يا مديريت تعداد دفعات ارجاع يا Load شدن در حافظه (Smart Refernce)

نمودار اين Pattern بدين صورت است:

Proxy Design Pattern

نمونه کد:

interface Report{
   public void ShowReport();
}


class FinantialReport implements Report{
   public void ShowReport(){
      …
   }
}


public class FinantialReportProxy implements Report{
   private Report rep;
   private User aUser;

   public void FinantialReportProxy(User aUser){
      this.aUser = aUser;
      rep = new FinantialReport();
   }

   public void ShowReport(){
      if (aUser.getRole() == USER_ADMIN)
         rep.ShowReport();
      else
         System.out.println(“This User does not have permission for Finantial Reports”);
   }
}


public static void main(String[] args){
   Report aReport = new FinantialReportProxy(currentUser);
   aReport.ShowReport();
}



منبع ها:

  1. Design Patterns – Elements of Reusable Object Oriented Software (GOF) By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

با برچسب: ,
پست شده در Design Pattern
3 دیدگاه در “Proxy
  1. vahid می‌گه:

    با سلام ممنون از سایتتون خیلی کمکم کرد فقط اگر لطف کنید کدهایی که می نویسین با توضیح باشه ممنون می شوم. بعضی هاشو نمیفهمم چکار می کنه مثه این pattern

  2. ژاله می‌گه:

    ببخشید الگوی طراحی پروکسی رو برای اتخاب واحد دانشگاه بنویسید.ممنون

پاسخ دهید

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

*


نُه − = 5

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

تماس با من: admin@paspars.com