نظم الرقابة والتألق
تصميم نظام إخطار مرن مع دورية المراقب في بيتسون
Table of Contents
إن إنشاء نظام مرن للإخطار أمر أساسي لتطبيقات البرامجيات الحديثة، إذ أن نمط المراقبين، وهو نمط تصميمي في هندسة البرمجيات، يوفر حلاً بارزاً لتنفيذ هذه النظم في بيتون، ويتيح للأجسام أن تنضم إلى أشياء أخرى وتتلقى آخر المستجدات منها بصورة دينامية، مما يعزز الانقسامات والتصعيد.
فهم خطة المراقب
ويحدد نمط المراقبين التبعية من جهة إلى أخرى بين الأشياء، وعندما تتغير حالة أحد الأشياء (الموضوع)، يتم إخطار جميع المعالين (المراقبين) تلقائيا، وهذا النمط مفيد بصفة خاصة لتنفيذ نظم مناولة الأحداث، مثل الإخطارات، حيث يتعين على عناصر متعددة أن تستجيب للتغييرات.
تنفيذ خطة (باترن) في (بيتون)
وفي بيتون، يمكن تنفيذ نمط المراقبين باستخدام الفصول والأساليب، ويحتفظ هذا الموضوع بقائمة بأسماء المراقبين، ويوفر أساليب لإلحاقهم وفصلهم وإخطارهم، ويقوم المراقبون بتنفيذ واجهة مشتركة لتلقي المعلومات المستكملة.
إنشاء فئة الموضوع
ويدير هذا القسم قائمة بالمراقبين ويوفر أساليب لتعديلها وإخطارها.
class Subject:
def __init__(self):
self.observers = []
def attach(self, observer):
self.observers.append(observer)
def detach(self, observer):
self.observers.remove(observer)
def notify(self, message):
for observer in self.observers:
observer.update(message)
إنشاء مركز المراقب
ويتعين على المراقبين تنفيذ طريقة تحديث لمعالجة الإخطارات.
class Observer:
def update(self, message):
raise NotImplementedError("Subclass must implement update method")
المراقبون المعاونونون
ويحدد المراقبون المضمونون ردود فعل محددة على الإخطارات، مثل طباعة رسالة أو تحديث واجهة المستعملين.
class EmailNotification(Observer):
def update(self, message):
print(f"Sending email notification: {message}")
class LogNotification(Observer):
def update(self, message):
print(f"Logging message: {message}")
استخدام نظام الإخطار
استخدام النظام، وخلق موضوع، وربط المراقبين، وإرسال إخطارات، ويتيح هذا التشكيل إضافة المراقبين أو إزالتهم بصورة دينامية.
# Create subject
notification_center = Subject()
# Create observers
email_alert = EmailNotification()
log_alert = LogNotification()
# Attach observers
notification_center.attach(email_alert)
notification_center.attach(log_alert)
# Send a notification
notification_center.notify("New message received!")
وهذا النمط يضمن أن نظام الإخطارات الخاص بك مرن ويمكن توسيعه بسهولة، ويمكنك إضافة أنواع جديدة من الإخطارات دون تعديل المدونة القائمة، مع التقيد بمبدأ البرمجيات المفتوح.