نمط الوكيل

ملف:Proxy pattern diagram.svg
الوكيل في يو ام ال
ملف:Proxy pattern in LePUS3.gif
الوكيل في LePUS3

في برمجة الكمبيوتر، نمط الوكيل هو نمط في تصميم البرمجيات.

الوكيل (Proxy)، في شكله الأكثر عمومية، هو فئة تعمل بمثابة واجهة لشيء آخر. الوكيل يمكن ان يكون واجهة لأي شيء : اتصال بالشبكة، كائن كبير في الذاكرة، ملف، أو بعض الموارد الأخرى التي هي مكلفة أو من المستحيل تكررارها.

من الأمثلة المعروفة لنمط الوكيل هو كائن مؤشرعد المراجع.

في الحالات التي يكون فيها نسخ متعددة من كائن معقد يجب أن تتواجد، يمكن تبني نمط الوكيل لإدماج نمط وزن الذبابة من أجل الحد من بصمة الذاكرة للتطبيق. وعادة نسخه واحده من الكائن المعقد يتم إنشاؤه، وكائنات وكيل متعددة يتم إنشاؤها، وجميعها تتضمن إشارة إلى كائن معقد اصلي واحد. أي عملية تجرى على وكلاء تحال إلى الكائن الأصلي. عندما تكون جميع نسخح الوكيل(Proxy) هي خارج النطاق، يمكن مسح الكائن من الذاكرة.

مثال

المثال التالي في الجافا يوضح نمط الوكيل(Proxy) "الافتراضي". والفئه ProxyImage يستخدم للوصول إلى طريقة نائية.

<source lang="java"> import java.util.*;

interface Image {

   public void displayImage();

}

//on System A class RealImage implements Image {

   private String filename;
   public RealImage(String filename) { 
       this.filename = filename;
       loadImageFromDisk();
   }
   private void loadImageFromDisk() {
       System.out.println("Loading   " + filename);
   }
   public void displayImage() { 
       System.out.println("Displaying " + filename); 
   }

}

//on System B class ProxyImage implements Image {

   private String filename;
   private Image image;

   public ProxyImage(String filename) { 
       this.filename = filename; 
   }
   public void displayImage() {
       image = new RealImage(filename);
       image.displayImage();
   }

}

class ProxyExample {

   public static void main(String[] args) {
       Image image1 = new ProxyImage("HiRes_10MB_Photo1");
       Image image2 = new ProxyImage("HiRes_10MB_Photo2");     
       
       image1.displayImage(); // loading necessary
       image2.displayImage(); // loading necessary
   }

} </source>

مخرج البرنامج:

Loading    HiRes_10MB_Photo1
Displaying HiRes_10MB_Photo1
Loading    HiRes_10MB_Photo2
Displaying HiRes_10MB_Photo2

وصلات خارجية

bg:Пълномощно (шаблон) ca:Proxy (patró de disseny) de:Stellvertreter (Entwurfsmuster) Proxy pattern]] es:Proxy (patrón de diseño) fr:Proxy (patron de conception) it:Proxy pattern ja:Proxy パターン ko:프록시 패턴 lt:Proxy (objektas) pl:Pełnomocnik (wzorzec projektowy) pt:Proxy (padrões de projeto) ru:Proxy (шаблон проектирования) uk:Замісник (шаблон проектування) zh:代理模式