এক্সিলিপ মডেলিং ফ্রেমওয়ার্কটির একটি আকর্ষণীয় ধারণা রয়েছে যা উত্তরাধিকারকেও বিবেচনা করে। স্যুইচ ইন্টারফেসে মূল ধারণাটি সংজ্ঞায়িত করা হয় : ডসউইচ পদ্ধতিটি চালু করে স্যুইচিং করা হয় ।
সত্যিই আকর্ষণীয় কি বাস্তবায়ন হয়। প্রতিটি ধরণের আগ্রহের জন্য, ক
public T caseXXXX(XXXX object);
পদ্ধতিটি অবশ্যই প্রয়োগ করা উচিত (একটি ডিফল্ট বাস্তবায়ন নাল ফেরার সাথে)। DoSwitch বাস্তবায়ন আল কল করার প্রচেষ্টা করা হবে caseXXX তার সব ধরনের অনুক্রমের জন্য বস্তুর উপর পদ্ধতি। এর লাইনে কিছু:
BaseType baseType = (BaseType)object;
T result = caseBaseType(eAttribute);
if (result == null) result = caseSuperType1(baseType);
if (result == null) result = caseSuperType2(baseType);
if (result == null) result = caseSuperType3(baseType);
if (result == null) result = caseSuperType4(baseType);
if (result == null) result = defaultCase(object);
return result;
আসল কাঠামো প্রতিটি শ্রেণীর জন্য একটি পূর্ণসংখ্যার আইডি ব্যবহার করে, সুতরাং যুক্তিটি আসলে খাঁটি স্যুইচ হয়:
public T doSwitch(Object object) {
return doSwitch(object.class(), eObject);
}
protected T doSwitch(Class clazz, Object object) {
return doSwitch(getClassifierID(clazz), object);
}
protected T doSwitch(int classifierID, Object theObject) {
switch (classifierID) {
case MyClasses.BASETYPE:
{
BaseType baseType = (BaseType)object;
...
return result;
}
case MyClasses.TYPE1:
{
...
}
...
আরও ভাল ধারণা পেতে আপনি ECoreSwitch এর সম্পূর্ণ বাস্তবায়নটি দেখতে পারেন ।