iclonable vs وظيفة مكتوبة بقوة مقابل كونها كسول

StackOverflow https://stackoverflow.com/questions/3683716

  •  02-10-2019
  •  | 
  •  

سؤال

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

أنا فقط في مرحلة التوثيق والفواه في الوقت الحالي ، لذا لن أحصل على ذلك بشكل صحيح.

س 1. لماذا تنفيذ iClonable وإرجاع كائن عندما يمكنك كتابة وظيفة مخصصة مكتوبة بقوة تُرجع نوع الكائن الصحيح المستنسخ؟

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

أي أفكار وآراء وتأملات رحبت بها.

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

المحلول

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

نصائح أخرى

الغرض من الواجهة هو السماح للأشخاص بالعمل على كائنات تدعم الواجهة دون الحاجة إلى القلق بشأن ماهية الكائنات بالفعل. دون معرفة ما هو iclonable.clone سيفعل في الواقع أي كائن معين ، فقط مع العلم أن كائن يدعم iclonable لا طائل منه.

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

لكي تكون واجهة الاستنساخ مفيدة ، يجب أن تضم خاصية يمكن من خلالها أن تقول العناصر كيف شعروا بالاستنساخ (على سبيل المثال -1- النوع غير قابل للتغيير ولا يحتاج إلى استنساخ ؛ -2 - من المحتمل أن يكسر النوع إنه ؛ -3- يدعم النوع الاستنساخ) ، وحدد أن عملية DeepClone ستحقق من جميع الكائنات للتأكد من أنها لا تمانع في الاستنساخ ، وإذا كان هذا هو الحال ، فستستنسخ جميع الأشياء المتداخلة المتداخلة. لسوء الحظ ، لا يوجد شيء من هذا القبيل في الإطار.

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

على سبيل المثال ، يمكن للمرء أن يكون لدى المرء عنصرًا نوعًا مع أنواع مشتقة بما في ذلك ClonableWidget و SuperWidget (وهو أمر غير قابل للاستنساخ). يمكن أن يكون لـ SuperWidget نوعًا مشتقًا من cloneablesuperwidget (إلى جانب بعض الآخرين الذين قد ينكسرون إذا تم استنساخه). إذا أراد المرء أن يكون قادرًا على العمل مع جميع المشتقات القابلة للاستنساخ من أداة النوع ، فسيتعين على المرء التحقق من أن الكائن مستمد من القطعة ، وأنه يكون مستنسخًا. إن إضافة iclonable إلى المشتقات المستنسخة من شأنه أن يسمح للمرء بالتحقق من مثل هذا الكائن.

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