يُستخدم لضمان وجود نسخة واحدة فقط (Instance) من كائن معين طوال فترة تشغيل البرنامج، مثل إدارة بيانات أو موارد مشتركة.
-
PatientDatabaseManager
:- إدارة بيانات المرضى (مثل الإضافة والاسترجاع).
- الهدف: التأكد من أن هناك مدير بيانات واحد فقط مسؤول عن إدارة المرضى.
-
لماذا؟: لضمان التزامن والاتساق عند التعامل مع قاعدة بيانات المرضى في كل أجزاء النظام.
يُستخدم لإنشاء الكائنات (Objects) بشكل ديناميكي بناءً على نوع معين، بدلاً من كتابة كود إنشاء منفصل لكل كائن.
DoctorFactory
:- إنشاء كائنات الأطباء (مثل Cardiologist و Neurologist).
- يتم تمرير تخصص الطبيب (Specialty) كمدخل، وتقوم الـ Factory بإرجاع كائن الطبيب المناسب.
- لتجنب كتابة أكواد متكررة عند إنشاء أنواع مختلفة من الأطباء.
- إضافة أنواع جديدة من الأطباء (مثل طبيب أسنان) يكون بسيطًا للغاية دون تعديل الكود الحالي.
يُستخدم لإنشاء كائنات معقدة خطوة بخطوة، مع السماح بمرونة في تعيين القيم.
- عند إنشاء
Appointment
(موعد):- يمكن استخدام Builder لتعيين القيم مثل اسم المريض، اسم الطبيب، وقت الموعد، وما إلى ذلك.
- مثال:
Appointment appointment = new AppointmentBuilder() .withPatient("John Doe") .withDoctor("Dr. Smith") .withTime("10:00 AM") .build();
- لتجنب كتابة مُنشئات (Constructors) معقدة تحتوي على عدد كبير من الوسائط.
- تحسين قراءة الكود.
يُستخدم لإنشاء نسخ من كائنات موجودة بدلًا من إنشائها من الصفر، مع إمكانية تعديل النسخة.
Appointment
:- يمكن استخدام طريقة
clone()
لإنشاء نسخة من موعد موجود لتعديله أو إعادة استخدامه في وقت لاحق.
- يمكن استخدام طريقة
- لتوفير الوقت والموارد عند الحاجة إلى نسخ كائنات معقدة.
يُستخدم لربط واجهتين مختلفتين بحيث يمكن استخدام كود مكتوب مسبقًا مع نظام جديد.
AppointmentAdapter
:- إذا كان هناك نظام قديم لإدارة المواعيد ونريد دمجه مع النظام الحالي، يمكن استخدام Adapter لتحويل واجهة النظام القديم لتكون متوافقة مع النظام الجديد.
- لتجنب إعادة كتابة النظام القديم.
- تسهيل الدمج بين الأنظمة المختلفة.
يُستخدم كبديل لكائن حقيقي للتحكم في الوصول إليه، مثل تحسين الأداء أو إضافة مستوى من الأمان.
- يمكن استخدام Proxy للتحكم في الوصول إلى قاعدة بيانات المرضى أو المواعيد:
- مثال: عند محاولة الوصول إلى قائمة المرضى، يتم تحميل البيانات فقط عند الطلب (Lazy Loading).
- لتحسين الأداء.
- لتوفير الأمان أو التحكم الإضافي عند الوصول إلى الموارد الحساسة.
النمط | مكان التطبيق | الفائدة |
---|---|---|
Singleton | PatientDatabaseManager |
ضمان وجود نسخة واحدة فقط من مدير المرضى. |
Factory | DoctorFactory |
إنشاء الأطباء بناءً على التخصص بسهولة وإضافة أنواع جديدة دون تغيير كبير. |
Builder | Appointment (ممكن إضافته) |
إنشاء المواعيد خطوة بخطوة بطريقة مرنة. |
Prototype | Appointment |
إنشاء نسخ من المواعيد لتعديلها أو إعادة استخدامها. |
Adapter | (يمكن إضافته لاحقًا) | دمج نظام قديم مع النظام الحالي. |
Proxy | (يمكن إضافته لاحقًا) | تحسين الأداء أو إضافة مستوى من التحكم عند الوصول إلى البيانات. |