الأساليب المشتركة بين الفئة المشتقة
-
28-09-2019 - |
سؤال
لديّ وظيفة تستخدمها فئتين مشتقتين ، لكن الثالث لا ، هل من المنطقي تركها في الفصل الأساسي ، على الرغم من أن إحدى الفئات الثلاثة المشتقة لا تستخدمه؟
الطريقة الوحيدة التي يمكن أن أفكر بها في عدم سماع الدرجة الثالثة هي إنشاء فئة وسيطة مستمدة من القاعدة ، ثم يتم اشتقاق 2 التي تستخدم الوظيفة المشتركة من الفئة الثانية.
هل من الممكن منع الفئة الثالثة من استخدام الوظيفة ، مع ترك الاثنين اللذين من المفترض أن يستخدمها ، استخدامها؟
هل يبدو أن هذا يبدو في الخارج ، أعني طالما أنني لا "أحاول" استدعاء الوظيفة من الفصل الثالث ، فلا ينبغي أن تكون مشكلة ، لقد كنت مهتمًا إذا كانت هناك طريقة لمنع كل شيء معا دون الكثير من المتاعب.
المحلول
لا توجد طريقة للقيام بذلك مباشرة. في الأساس ، عند فئة Subcass ، تقول إن الفئة الفرعية هي نسخة أكثر تحديدًا من الفئة الأساسية.
في هذه الحالة ، تحاول أن تقول "الفئة الفرعية هي نسخة أكثر تحديدًا من الفئة الأساسية ، except for the fact that it shouldn't be able to touch XXX
"هذا ، في جوهره ، ينتهك مبدأ استبدال Liskov.
أفضل طريقة للتعامل مع هذا هي إضافة فئة قاعدة ثانية في التسلسل الهرمي الخاص بك ، وهو أعتقد أن الحل الذي ذكرته.
في الأساس ، اجعل التسلسل الهرمي الخاص بك:
base
| \---- subclass without feature available
|
\--base+feature
\--subclass one with specific feature
\--subclass two with specific feature
نصائح أخرى
يمكنك جعل هذه الوظيفة افتراضية. ثم تجاوز الوظيفة في الفئة الثالثة ورمي استثناء. سيمنع المطورين من استخدام الوظيفة في الفئة الثالثة.