سؤال

أنا أعمل على مشروع شخصي وهو محرر رمز بشكل أساسي. تخيل قائمة الملفات القياسية مع عناصر القائمة جديدة ، فتح ، حفظ ، حفظ ، حفظ الكل ، أغلق ، أغلق كل شيء.

أنا عالق مع التصميم المناسب. حاليا لدي:

  • فئة المستندات التي تمثل مستندًا - تحكم تحرير التعليمات البرمجية ، وعلامة التبويب المعنية في شريط علامات التبويب والعديد من الخصائص مثل التسمية التوضيحية ، اسم الملف ، غير مُعدّي إلخ.
  • فئة المستندات التي تمثل جميع المستندات المفتوحة. يحتوي على طرق مثل جديدة ، مفتوحة (اسم الملف) ، ...

المشكلة هي أنه لا يمكنني معرفة أي أمر فئة / القائمة المسؤولة عن المهام.

على سبيل المثال ، مع ملف file-> الجديد بسيط - استدعاء المستندات.

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

الشيء نفسه مع حفظ الإجراءات. ما هو المسؤول عن الادخار؟ هل هي فئة المستندات التي تستخدم document.editor.savetofile (اسم الملف) أو أفضل إنشاء طريقة حفظ في فئة المستند؟ في مكان ما في الوسط يحتاج أيضًا إلى سؤال المستخدم عما إذا كان يريد حفظ المستند الحالي ...

انا عالق. أيه أفكار؟

تحرير: لغة البرمجة هي دلفي.

هل كانت مفيدة؟

المحلول

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

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

آمل أن يكون لديك بعض الفصول لتمثيل واجهة المستخدم والتفاعل مع المستخدم للحصول على جميع المعلومات اللازمة لإنشاء ملف أو فتحه. يجب أن تتعامل مع كل شيء من هناك. خلاف ذلك ، فأنت تزين النموذج الخاص بك مع الأشياء المتعلقة واجهة المستخدم.

نصائح أخرى

تحتاج إلى كائن Singleton (DocumentManager) الذي يدير جميع عمليات المستندات. سيكون هذا وظائف مثل:

  • GET (IDLIST)
  • الحصول على الجديد
  • حفظ (doClist)
  • تحديث
  • إلخ...
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top