"अपरिवर्तनीय वस्तुओं" के लिए कक्षाएं बनाते समय अपरिवर्तनीय अर्थ है कि उदाहरणों की स्थिति को बदला नहीं जा सकता है; जावा (और इसी तरह की भाषाओं) में कन्स्ट्रक्टर में असाइन किए गए सभी फ़ील्ड), कभी-कभी संशोधित उदाहरणों के निर्माण की अनुमति देने के लिए उपयोगी होता है। यही है, आधार के रूप में एक उदाहरण का उपयोग करना, और एक नया उदाहरण बनाना जो केवल एक संपत्ति मूल्य से भिन्न होता है; आधार उदाहरण से आने वाले अन्य मूल्य। एक साधारण उदाहरण देने के लिए, किसी के पास कक्षा हो सकती है:अपरिवर्तनीय वस्तुओं के साथ प्रयुक्त फैक्ट्री जैसी (जावा) विधियों को क्या कॉल करें
public class Circle {
final double x, y; // location
final double radius;
public Circle(double x, double y, double r) {
this.x = x;
this.y = y;
this.r = r;
}
// method for creating a new instance, moved in x-axis by specified amount
public Circle withOffset(double deltaX) {
return new Circle(x+deltaX, y, radius);
}
}
तो: "ऑफ़सेट" के साथ विधि क्या होनी चाहिए? (ध्यान दें: इसका नाम क्या नहीं होना चाहिए - लेकिन इस वर्ग के तरीकों को क्या कहा जाता है)। तकनीकी रूप से यह एक कारखाना विधि है, लेकिन किसी भी तरह से यह मेरे लिए बिल्कुल सही नहीं लगता है, क्योंकि अक्सर कारखानों को मूल गुण दिए जाते हैं (और या तो स्थिर तरीके हैं, या परिणाम प्रकार के सदस्य नहीं हैं लेकिन कारखाने के प्रकार हैं)।
तो मुझे लगता है कि इस तरह के तरीकों के लिए एक बेहतर शब्द होना चाहिए। चूंकि इन विधियों का उपयोग "fluent interface" को लागू करने के लिए किया जा सकता है, हो सकता है कि वे "धाराप्रवाह फैक्ट्री विधियां" हो सकें? बेहतर सुझाव?
संपादित करें: जैसा कि उत्तर में से एक द्वारा सुझाया गया है, java.math.BigDecimal
इसके 'एड', 'घटाव' (आदि) विधियों के साथ एक अच्छा उदाहरण है।
इसके अलावा: मैंने देखा वहाँ (जॉन स्कीट से कम नहीं) है कि this question वह यह है कि एक तरह से संबंधित
संपादित करें (हालांकि यह विधि के लिए के बारे में विशिष्ट नाम पूछता है), मई-2014: मेरे वर्तमान पसंदीदा mutant factory
, FWIW है ।
मैं इसे एक खराब नामित विधि कहूंगा। – Falmarri
"चाल" और "डेल्टा" मौजूदा उदाहरण के गुणों की व्यवहार्यता को दर्शाता है ... – BoltClock
कृपया वास्तविक प्रश्न पढ़ें - मैंने नहीं पूछा कि तरीकों का नाम कैसे दिया जाए, लेकिन किस तरह के तरीकों को कॉल करना है। लेकिन दूसरों को अलगाव पर जाने से रोकने के लिए मैं थोड़ा सा कोड संपादित करूंगा। – StaxMan