मान लें कि मेरे पास उपयोगिता वर्ग दिनांक है (नीचे देखें)। इस विधि का उपयोग करने के लिए एक कॉलर विधि DateUtils.getDateAsString (aDate) का उपयोग करती है। यह बेहतर होगा स्थिर संशोधक एक वसंत सेम दूर करने के लिए और बनाने के DateUtil (देखें DateUtilsBean) और वर्गों बुला को इसकी सुई या बस के रूप में है इसे छोड़?स्प्रिंग एप्लिकेशन में उपयोगिता वर्ग - क्या मुझे स्थिर तरीकों का उपयोग करना चाहिए या नहीं?
एक नुकसान यह है कि मैं स्थिर उपयोग करने के साथ देख सकते हैं मजाक आसपास के मुद्दों, How to mock with static methods?
public class DateUtils {
public static String getDateAsString(Date date) {
String retValue = "" // do something here using date parameter
return retValue;
}
}
स्प्रिंग बीन संस्करण
@Component
public class DateUtilsBean {
public String getDateAsString(Date date) {
String retValue = "" // do something here using date parameter
return retValue;
}
}
सहमत हुए। सिर्फ इसलिए कि _anything_ _could_ को स्प्रिंग बीन के रूप में वायर्ड किया जाना मतलब नहीं है _everything_ _should_ स्प्रिंग बीन के रूप में वायर्ड किया जाना चाहिए। –
क्या होगा यदि स्थिर विधि कॉन्फ़िगरेशन फ़ाइल पढ़ती है जो मेरे एप्लिकेशन को चलाती है? यह संभावना है कि मैं उस व्यवहार को नकल करना चाहता हूं। बस इसके बारे में सोचें: आप कार्यात्मक परीक्षण करना चाहते हैं लेकिन आप "कॉन्फ़िगरेशन फैक्ट्री" बनना नहीं चाहते हैं। अगर यह एक सिंगलटन होगा तो मैं उस विधि को आसानी से नकल कर सकता हूं और कोड से अपना परीक्षण चला सकता हूं। हालांकि पावरमैक के साथ स्थैतिक तरीकों का नकल करना भी संभव है। – uthomas
यह अति-इंजीनियरिंग हो सकता है, लेकिन इसे एक बीन बनाने के लिए जिसे इंजेक्शन दिया जा सकता है, इकाई-परीक्षण निर्भर वर्गों को आसान बनाता है। अगर यह एक इंटरफ़ेस लागू किया गया था तो यह परीक्षण करना और भी आसान बना देगा। – Behrang