شروحات الكمبيوتر والإنترنت والموبايل

تنفيذ نمط المراقب المخصص في جافا بدون مكتبات مدمجة

مقدمة حول نمط المراقب (Observer Pattern)

في عالم تطوير البرمجيات، يعتبر نمط المراقب (Observer Pattern) من الأنماط الأساسية في البرمجة كائنية التوجه (OOP). يتيح هذا النمط إمكانية تفاعل الكائنات مع بعضها البعض بطريقة فعالة، حيث يتمكن كائن واحد (الموضوع) من إبلاغ مجموعة من الكائنات الأخرى (المراقبون) عن أي تغييرات تحدث. في هذا المقال، سوف نستعرض كيفية تنفيذ نمط المراقب المخصص في لغة Java، دون الاعتماد على المكتبات المدمجة مثل java.util.Observer أو PropertyChangeSupport.

الخطوة 1: تعريف واجهة المراقب

للبدء، نقوم بتعريف واجهة للمراقب. هذه الواجهة ستحتوي على طريقة واحدة تُسمى update، والتي تُستخدم لإبلاغ المراقب بالتحديثات الجديدة. عينة الكود لطريقة التعريف ستبدو كالتالي:

public interface Observer {
    void update(String message); // يحصل المراقب على إشعار
}

الخطوة 2: تعريف واجهة الموضوع

بعد ذلك، نقوم بإنشاء واجهة الموضوع. تحتوي هذه الواجهة على مجموعة من الطرق، مثل تسجيل المراقب، إلغاء تسجيله، وإخطار جميع المراقبين بالتحديثات. هنا هو الكود الخاص بذلك:

public interface Subject {
    void registerObserver(Observer observer);
    void unregisterObserver(Observer observer);
    void notifyObservers(String message);
}

الخطوة 3: تنفيذ الموضوع الملموس

نستمر في تنفيذ نمط المراقب من خلال إنشاء فئة معينة تمثل الموضوع. سنقوم بتخزين قائمة بالمراقبين داخل هذه الفئة وإشعارهم بالتغييرات عند الحاجة. إليك كيف ستبدو البنية الأساسية لهذه الفئة:

import java.util.ArrayList;
import java.util.List;
public class ConcreteSubject implements Subject {
    private final List<Observer> observers = new ArrayList<>(); // قائمة لتخزين المراقبين
    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    @Override
    public void unregisterObserver(Observer observer) {
        observers.remove(observer);
    }
    @Override
    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message); // قم بإخطار كل مراقب
        }
    }
}

الخطوة 4: تنفيذ المراقب الملموس

الآن نأتي إلى إنشاء فئة تمثل المراقب. سنقوم بتعريف خاصية اسم فريدة لكل مراقب وسنقوم بتنفيذ طريقة update لكي يقوم المراقب بطباعة التحديثات الواردة. الكود التالي يوضح ذلك:

public class ConcreteObserver implements Observer {
    private final String name;
    public ConcreteObserver(String name) {
        this.name = name;
    }
    @Override
    public void update(String message) {
        System.out.println(name + " received update: " + message);
    }
}

اختبار نمط المراقب

يمكننا الآن اختبار هذا النمط من خلال تنفيذ كود رئيسي يقوم بإنشاء موضوع و مراقبين، وتسجيلهم، وإخطارهم بالتحديثات. هنا هو الشرح خطوة بخطوة:

public class ObserverPatternTest {
    public static void main(String[] args) {
        // إنشاء الموضوع
        ConcreteSubject subject = new ConcreteSubject();
        // إنشاء مراقبين
        Observer observer1 = new ConcreteObserver("Observer 1");
        Observer observer2 = new ConcreteObserver("Observer 2");
        Observer observer3 = new ConcreteObserver("Observer 3");
        // تسجيل المراقبين
        subject.registerObserver(observer1);
        subject.registerObserver(observer2);
        subject.registerObserver(observer3);
        // إخطار المراقبين
        System.out.println("تغيير الحالة للمرة الأولى .....");    
        subject.notifyObservers("التحديث الأول");
        // إلغاء تسجيل مراقب وإرسال إشعار آخر
        subject.unregisterObserver(observer2);
        System.out.println("تغيير الحالة للمرة الثانية .....");
        subject.notifyObservers("التحديث الثاني");
    }
}

النتائج المتوقعة

عند تشغيل البرنامج سيظهر الإخراج كالتالي:

تغيير الحالة للمرة الأولى .....
Observer 1 received update: التحديث الأول
Observer 2 received update: التحديث الأول
Observer 3 received update: التحديث الأول
تغيير الحالة للمرة الثانية .....
Observer 1 received update: التحديث الثاني
Observer 3 received update: التحديث الثاني

خاتمة

في هذا المقال، قدمنا لك وسيلة بسيطة ومباشرة لتنفيذ نمط المراقب المخصص في Java. استخدام الأنماط كائنية التوجه يعزز من مرونة الكود وقابليته للتطوير. من المهم فهم كيفية عمل هذا النمط وكيفية تطبيقه في مشاريعك الخاصة لتحسين التفاعل بين الكائنات.

يمكنك استخدام هذه الأفكار لتحسين تطبيقاتك وجعلها أكثر احترافية وتفاعلاً. تجربة نمط المراقب المخصص يساعدك أيضاً في تعزيز مهاراتك في البرمجة كائنية التوجه.

فهد السلال

خبير تقني متخصص في شروحات الكمبيوتر والإنترنت والموبايل، يتمتع بخبرة واسعة في تقديم حلول تقنية مبتكرة ومبسطة. يهدف فهد إلى مساعدة المستخدمين على تحسين تجربتهم التقنية من خلال مقالات وأدلة عملية واضحة وسهلة الفهم.
زر الذهاب إلى الأعلى
Don`t copy text!

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

إعدادات ملفات تعريف الارتباط  

فيما يلي يمكنك اختيار نوع ملفات تعريف الارتباط التي تسمح بها على هذا الموقع. انقر على زر "حفظ إعدادات ملفات تعريف الارتباط" لتطبيق اختيارك.

ملفات ضرورية.يستخدم موقعنا ملفات تعريف الارتباط الوظيفية. هذه الملفات ضرورية لعمل موقعنا بشكل صحيح.

تحليل.يستخدم موقعنا ملفات تعريف الارتباط التحليلية لتمكيننا من تحليل موقعنا وتحسينه لأغراض مثل تحسين تجربة المستخدم.

وسائل التواصل الاجتماعي.يضع موقعنا ملفات تعريف الارتباط الخاصة بوسائل التواصل الاجتماعي لعرض محتوى من جهات خارجية مثل يوتيوب وفيسبوك. قد تقوم هذه الملفات بتتبع بياناتك الشخصية.

إعلانات.يضع موقعنا ملفات تعريف الارتباط الإعلانية لعرض إعلانات من جهات خارجية بناءً على اهتماماتك. قد تقوم هذه الملفات بتتبع بياناتك الشخصية.

أخرى.يضع موقعنا ملفات تعريف الارتباط من جهات خارجية أخرى ليست تحليلية أو خاصة بوسائل التواصل الاجتماعي أو الإعلانات.