शायद इस के आसपास एक आसान तरीका है जिसे मैं नहीं देख रहा हूं, इसलिए उम्मीद है कि कोई मुझे यह समझा सकता है।बूस्ट और बाहरी डेटा स्रोतों के साथ फ्लाईवेइट्स
चलो कहते हैं कि मैं एक वर्ग करते हैं:
class A {
public:
const double parameter;
const std::string name;
const std:: string fileName;
A(const double parameter, const std::string name, const std::string fileName) :
parameter(parameter), name(name), fileName(fileName) {};
};
और उस वर्ग के लिए जनरेटर है:
class AReader {
public:
ifstream dataFile;
AReader(const std::string filename);
A* readObject(const std::string objectName);
};
मैं इन A
वस्तुओं को संभालने के लिए boost::flyweight
उपयोग करने के लिए, क्योंकि वहाँ संभावित लाखों हो जाएगा चाहते हैं उनके संदर्भ में और हकीकत में वे बहुत सारे डेटा रखते हैं। उन्हें name
और fileName
पर एक साथ धोया जाएगा।
मुझे यह काम करने की क्या ज़रूरत है? AReader.readObject
पर कॉल करने के लिए मुझे boost::flyweight
की आवश्यकता है और परिणामस्वरूप A
कक्षा हैश/स्टोर करें।
क्या AReader
को एक पूर्ण कारखाना बनने और कस्टम फैक्ट्री के रूप में उपयोग करने की आवश्यकता है? या क्या फ्लाईवेट में डिफॉल्ट फैक्ट्री का उपयोग करना संभव है और किसी भी तरह AReader
का उपयोग A
उदाहरण (कारखाने द्वारा आवश्यक पूरे स्टोरेज पैटर्न को लागू करने के विरोध में) उत्पन्न करने के लिए किया जा सकता है, शायद AReader
उदाहरण से फ्लाईवेट में कुछ तर्क हो सकता है? या क्या दूसरी कक्षा तक पहुंचने के बिना बाहरी डेटा स्रोत से const
सार्वजनिक चर (यानी एक बार सेट, वे नहीं बदलते) प्राप्त करना संभव है?
संपादित
मैं भी अन्य सुझावों बूस्ट का उपयोग नहीं करने के लिए खुला रहा हूँ। यदि कोई बेहतर अनुकूल है तो मैं निश्चित रूप से फ्लाईवेट, या किसी अन्य पैटर्न के अपने कार्यान्वयन को लिख सकता हूं। लेकिन अगर मैं कुछ ऐसा उपयोग कर सकता हूं जो पहले से मौजूद है, तो यह सबसे अच्छा होगा। जो भी कोड लिखने की आवश्यकता है, उसे कम से कम जो भी लिखना है, हमेशा की तरह, समय सीमा कम होती है।
वह फ्लाईवेट (असाइन करने योग्य की बजाय कुंजी निकालने वाला) में 'ए' प्राप्त करने के लिए क्या करने की आवश्यकता है, लेकिन एक सहायक वर्ग का उपयोग करने का एकमात्र तरीका है जो 'ए' उत्पन्न करता है इसे फ्लाईवेट (भंडारण और आवश्यक अन्य तरीकों को लागू करने) द्वारा उपयोग किए जाने वाले एक पूर्ण उड़ाए कारखाने को बनाओ? – tpg2114