سؤال

كنت أتساءل إذا كان هناك نمط المعاكس من نمط مصنع.على سبيل المثال, عندما معين كائن يحتاج إلى حذف بعض العمل الإضافي يحتاج إلى أن يتم التراجع عن التكوين التي كان يؤديها في المصنع الكائن.

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

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

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

المحلول

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

إذا كنت لا ترغب في وضع هذا في المصنع، يمكنك تفويض ذلك إلى نوع من كائن آخر، مثل DeathKeeper ؛-). لذا التعليمات البرمجية ستبدو sometihng مثل هذا:

//Inside factory create method
MyObject obj = GetNewInitializedObject();
_detahKeeper.RegisterObject(obj);

return obj;

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

نصائح أخرى

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

يمكنني استخدام "مرفق إعادة التدوير" نمط العمل جنبا إلى جنب مع المصنع:

  • قد "نظيفة" الطريقة لكل فئة التي يمكن إعادة تدويرها
  • يكون "معرف فريد" لكل كائن سبيل المثال

في كل مرة كائن تصل إلى نهاية الحياة ، وإرساله إلى "مرفق إعادة التدوير" (RF):

  • RF محلات وجوه وفقا لبعض السياسات ( مثلتبقي فقط X الحالات من فئة Y )
  • عندما مثيل من فئة Y مطلوب مصنع "يسأل" RF إذا كان لديك واحد
    • إذا كان RF واحد مفيد ، RF يدعو "النظيفة()" الأسلوب على سبيل المثال ، يعود إلى المصنع

...وهلم جرا وهكذا دواليك.

ويساعد هذا الأمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top