मैंने हाल ही में जावा में एक मध्यम आकार की परियोजना को फिर से शुरू करने और इकाई परीक्षणों को जोड़ने का काम किया है। जब मुझे महसूस हुआ कि सिंगलटन और स्टैटिक्स का मजाक उड़ाने में कितना दर्द होता है, तो मुझे आखिरकार "मिल गया" जो मैं इस समय उनके बारे में पढ़ रहा हूं। (मैं उन लोगों में से एक हूं जिन्हें अनुभव से सीखने की जरूरत है। अच्छी तरह से।)
इसलिए, अब जब मैं वस्तुओं को बनाने और उन्हें चारों ओर तार करने के लिए स्प्रिंग का उपयोग कर रहा हूं, तो मुझे static
बाएं और दाएं कीवर्ड से छुटकारा मिल रहा है । (अगर मैं संभावित रूप से इसका मजाक उड़ा सकता था, तो यह वास्तव में एक ही अर्थ में स्थिर नहीं है कि Math.abs (), सही है?) बात यह है, मुझे यह बताने की आदत की आदत हो गई है static
कि एक विधि पर भरोसा नहीं था किसी वस्तु की अवस्था पर। उदाहरण के लिए:
//Before
import com.thirdparty.ThirdPartyLibrary.Thingy;
public class ThirdPartyLibraryWrapper {
public static Thingy newThingy(InputType input) {
new Thingy.Builder().withInput(input).alwaysFrobnicate().build();
}
}
//called as...
ThirdPartyLibraryWrapper.newThingy(input);
//After
public class ThirdPartyFactory {
public Thingy newThingy(InputType input) {
new Thingy.Builder().withInput(input).alwaysFrobnicate().build();
}
}
//called as...
thirdPartyFactoryInstance.newThingy(input);
तो, यहाँ है जहाँ यह छू-मटोल हो जाता है। मुझे पुराना तरीका पसंद आया क्योंकि कैपिटल लेटर ने मुझे बताया कि, जैसे Math.sin (x), ThirdPartyLibraryWrapper.newThingy (x) ने हर बार उसी तरह किया। यह बदलने के लिए कोई वस्तु स्थिति नहीं है कि वस्तु वह कैसे करती है जो मैं उसे करने के लिए कह रहा हूं। यहाँ कुछ संभावित उत्तर दिए जा रहे हैं जिन पर मैं विचार कर रहा हूँ।
- किसी और को इस तरह महसूस नहीं होता इसलिए मेरे साथ कुछ गड़बड़ है। हो सकता है कि मैंने अभी-अभी चीजों को करने के तरीके को आंतरिक रूप से आंतरिक नहीं किया है! शायद मैं जावा में लिख रहा हूं, लेकिन फोरट्रान या सोमेसुच में सोच रहा हूं। (जो प्रभावशाली होगा क्योंकि मैंने कभी फोरट्रान नहीं लिखा है।)
- शायद मैं कोड के बारे में तर्क के प्रयोजनों के लिए अपरिवर्तनीयता के लिए छद्म के रूप में स्थिरता का उपयोग कर रहा हूं। यह कहा जा रहा है, किसी व्यक्ति के लिए मेरे कोड में क्या सुराग होना चाहिए , यह जानने के लिए कि वह क्या राज्य है और क्या नहीं है?
- शायद यह सिर्फ मुफ्त में आना चाहिए अगर मैं अच्छी वस्तु रूपकों का चयन करूं? उदाहरण के लिए
thingyWrapper
यह ध्वनि नहीं करता है जैसे इसमें लिपटे हुए का संकेत हैThingy
जो कि स्वयं ही परिवर्तनशील हो सकता है। इसी तरह, ऐसाthingyFactory
लगता है कि यह अपरिवर्तनीय होना चाहिए, लेकिन अलग-अलग रणनीतियाँ हो सकती हैं जिन्हें निर्माण के बीच चुना जाता है।