जो मैंने सीखा है, उससे कोई अच्छा नहीं है यदि आप अक्सर कक्षा पदानुक्रमों में डाउनकास्टिंग का उपयोग करते हैं। मैं इसके साथ सहमत हूं, लेकिन अगर इस नियम से कोई अपवाद है तो क्या?
यह वह जगह है जहां ग्राफिकल संपादक का मेरा डिजाइन पतला दिखाता है: मेरे पास दो पदानुक्रम हैं, जहां ज्यामितीय आंकड़े पदानुक्रम ग्राफिक प्राइमेटिव्स से decoupled। इस तरह:
कक्षा पदानुक्रम में हमेशा बुराई हमेशा बुराई है?
public class GeometricPrimitive {...}
public class RectangeGeometric: Geometric Primitive {...}
public class GraphicPrimitive {...}
public class Rectangle: GraphicPrimitive {
private RectangleGeometric figure;
...
}
तो, हर ठोस ग्राफिक आंकड़ा वर्ग ठोस ज्यामिति वर्ग के उदाहरण समाहित।
क्या यह दृष्टिकोण सही है, या मुझे अधिक सामान्य पसंद करना चाहिए? - दुर्भाग्य से, downcasting इस मामले में इस्तेमाल किया जाएगा:
public class GraphicPrimitive {
protected GeometryPrimitive figure;
....
}
public class Rectangle: GraohicPrimitive {
public Rectangle(Color c, TwoDPoint leftHighPoint, TwoDPoint rightLowPoint):
base(new RectangleGeometric(leftHighPoint.Point2D, rightLowPoint.Point2D), c) { }
#region Geometric Properties
public TwoDPoint LeftTopCorner {
get { return new TwoDPoint(base.color, (base.figure as RectangleGeometric).LeftTopCorner); }
}
public TwoDPoint RightBottomCorner {
get { return new TwoDPoint(base.color, (base.figure as RectangleGeometric).RightBottomCorner); }
}
मैंने आपके रास्ते का पालन किया, धन्यवाद – chester89
मुझे खुशी है कि यह आपके लिए काम करता है :) –