के साथ सिंगलटन क्लास मैं कंप्यूटर दृष्टि अनुप्रयोग विकसित कर रहा हूं और मुझे क्लासिफायर क्लास की आवश्यकता होगी। यह कक्षा आवेदन के प्रति रन अपरिवर्तनीय होगी और यह शुरुआतीकरण पर डिस्क से प्रशिक्षित डेटा लोड करती है। मैं यह सुनिश्चित करना चाहता हूं कि पूरे कार्यक्रम में एक ही प्रशिक्षित डेटा तक पहुंच होगी और मैं लोड होने के बाद डिस्क से पुनः लोड करना चाहता हूं।पैरामीटर
जो मैं विचार कर रहा था वह स्थिर वर्ग या सिंगलटन का उपयोग करना था। मुझे यकीन नहीं है कि डेटा को स्थिर वर्ग में कैसे लोड किया जाए, क्योंकि डेटा फ़ाइल का पथ संकलन समय पर नहीं जानता है - यह प्रोग्राम तर्क होगा। तो मैं सिंगलटन पैटर्न के बारे में सोच रहा था, लेकिन वहां मुझे नहीं पता कि इसे गतिशील रूप से कैसे प्रारंभ किया जाए।
class Singleton {
private static Singleton instance;
private Singleton() { ... }
private static SomeDataObject data;
public static Singleton getInstance() {
if(instance == null)
instance = new Singleton();
return instance;
}
public static init(string dataPath){
if(data == null)
loadDataFromFile(dataPath)
}
}
यह कार्य नहीं करेगा, क्योंकि मैं कोई नियंत्रण नहीं है जो विधि पहले बुलाया जाएगा है:
मेरा विचार निम्नलिखित इस्तेमाल किया गया।
मुझे पता है कि शुरुआत में डेटा के साथ उदाहरण बनाने के लिए उचित तरीका होगा और इसे सभी वर्गों और तरीकों से गुजरना होगा, लेकिन यह वास्तव में सामान्य समाधान नहीं है। मैं क्लासिफायर को अपने कोड में सभी कॉल का ट्रैक रख सकता हूं, लेकिन अगर मैं एपीआई के रूप में कोड बनाउंगा, तो यह एक समस्या होगी।
रनटाइम पर सिंगलटन को प्रारंभ करने के तरीके में संक्षेप में कैसे?
कार्यक्रम तर्क 'डेटापाथ' प्रोग्रामेटिक रूप से सुलभ कैसे है? –
आपको *** दोनों *** एक स्थिर सिंगलटन उदाहरण *** और *** डेटा ऑब्जेक्ट की आवश्यकता नहीं है। इसके अलावा, आपका वर्तमान सिंगलटन कार्यान्वयन थ्रेड सुरक्षित नहीं है। – Perception
@MattBall यह या तो GUI से हो सकता है, या कमांड लाइन तर्क – jnovacho