में मान ऑब्जेक्ट्स (विरासत) मान्य करें मैं सिस्टम के किसी अन्य भाग पर जाने से पहले अपने डोमेन ऑब्जेक्ट्स को सत्यापित करना चाहता हूं। सभी ऑब्जेक्ट जिन्हें मैं मान्य करना चाहता हूं उसी इंटरफ़ेस को साझा करना चाहता हूं। समस्या यह है कि मैं यह नहीं समझ सकता कि इसे कैसे अच्छी तरह से लिखना है। मैं अपने मूल्य वस्तु के अंदर सत्यापन को स्थानांतरित नहीं करना चाहता हूं। लेकिन मैं एक उदाहरण करने के लिए मजबूर नहीं होना चाहता हूं या तो जांच करें।जावा
एक उदाहरण:
public interface Vehicle {}
public class Car implements Vehicle {}
public class MotorBike implements Vehicle {}
public interface VehicleValidator {
void validate();
}
public class CarValidator implements VehicleValidator {
@Override
public void validate() {}
}
public class MotorBikeValidator implements VehicleValidator {
@Override
public void validate() {}
}
public void process(Vehicle vehicle) {
//TODO: validate vehicle
doSomething(vehicle);
}
स्काला में मैं http://debasishg.blogspot.se/2010/06/scala-implicits-type-classes-here-i.html लेकिन उन भाषा निर्माणों को कुछ इसी तरह किया होता जावा में संभव नहीं है।
यह एक बहुत लगता है:
आप वाहन है, जो गतिशील रूप से रनटाइम पर सत्यापनकर्ता की उचित विधि के लिए बाध्य होंगे में कॉल-बैक कोड का एक छोटा सा जोड़ने की जरूरत [* विज़िटर पैटर्न *] के बारे में (http://en.wikipedia.org/wiki/Visitor_pattern)। –
आप वैल्यू ऑब्जेक्ट में सत्यापन विधि क्यों नहीं रखना चाहते हैं? जैसा कि यह है, भले ही आप इंटरफ़ेस पदानुक्रम को साफ करते हैं, फिर भी आपको मूल्य वस्तुओं के प्राकृतिक पदानुक्रम का समर्थन करने के लिए, सत्यापनकर्ता कार्यान्वयन को श्रृंखलाबद्ध करने की आवश्यकता होगी। – Perception
जिज्ञासा से बाहर, क्या इस परिदृश्य में एक उदाहरण का उपयोग करने के खिलाफ कोई कारण है? – Zylth