সম্পাদনা: অন্য প্রশ্ন থেকে আমি একটি উত্তর সরবরাহ করেছি যার সিঙ্গেলন সম্পর্কে প্রচুর প্রশ্ন / উত্তরগুলির লিঙ্ক রয়েছে: সিলেটলেট সম্পর্কিত আরও তথ্য এখানে:
তাই আমি থ্রেডটি সিঙ্গলেটন পড়েছি : ভাল ডিজাইন বা ক্রাচ?
এবং তর্ক এখনও rages।
আমি সিঙ্গলেটগুলি একটি ডিজাইনের প্যাটার্ন হিসাবে দেখছি (ভাল এবং খারাপ)।
সিঙ্গলটনের সমস্যাটি প্যাটার্ন নয় বরং ব্যবহারকারীরা (দুঃখিত সবাই)। প্রত্যেকে এবং তাদের পিতা ভাবেন যে তারা একটি সঠিকভাবে প্রয়োগ করতে পারে (এবং আমি যে অনেক সাক্ষাত্কার নিয়েছি তা থেকে বেশিরভাগ লোকেরা পারে না)। এছাড়াও যেহেতু প্রত্যেকে ভাবেন যে তারা একটি সঠিক সিঙ্গেলটন প্রয়োগ করতে পারে তারা প্যাটার্নটিকে অপব্যবহার করে এবং উপযুক্ত নয় এমন পরিস্থিতিতে এটি ব্যবহার করে (গ্লোবাল ভেরিয়েবলগুলি সিঙ্গলটনের পরিবর্তে!)।
সুতরাং যে প্রধান প্রশ্নের উত্তর দেওয়া দরকার তা হ'ল:
- আপনি কখন একক ব্যবহার করবেন?
- আপনি কীভাবে একটি সিঙ্গলটনকে সঠিকভাবে প্রয়োগ করবেন
এই নিবন্ধটির জন্য আমার আশা হ'ল আমরা একা এক জায়গায় (একাধিক সাইট গুগল করা এবং সন্ধান করার চেয়ে) একত্রে সংগ্রহ করতে পারি (কখন কীভাবে) সিঙ্গেলটনকে সঠিকভাবে ব্যবহার করতে হবে তার একটি অনুমোদিত উত্স। এন্টি-ইউজেজ এবং সাধারণ খারাপ বাস্তবায়নের তালিকা যেগুলি কেন তারা কাজ করতে ব্যর্থ হয় এবং ভাল বাস্তবায়নের জন্য তাদের দুর্বলতাগুলির জন্য উপযুক্ত।
তাই বলটি ঘূর্ণায়মান হয়ে
উঠুন : আমি আমার হাতটি ধরে রাখব এবং বলব এটিই আমি ব্যবহার করি তবে সম্ভবত সমস্যা আছে।
তাঁর "" কার্যকর সি ++ "বইগুলিতে বিষয়টির পরিচালনা" স্কট মাইয়ার্স "পছন্দ করি
সিঙ্গলেটন ব্যবহার করার জন্য ভাল পরিস্থিতি (অনেকগুলি নয়):
- লগিং ফ্রেমওয়ার্কগুলি
- থ্রেড রিসাইক্লিং পুলগুলি
/*
* C++ Singleton
* Limitation: Single Threaded Design
* See: http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf
* For problems associated with locking in multi threaded applications
*
* Limitation:
* If you use this Singleton (A) within a destructor of another Singleton (B)
* This Singleton (A) must be fully constructed before the constructor of (B)
* is called.
*/
class MySingleton
{
private:
// Private Constructor
MySingleton();
// Stop the compiler generating methods of copy the object
MySingleton(MySingleton const& copy); // Not Implemented
MySingleton& operator=(MySingleton const& copy); // Not Implemented
public:
static MySingleton& getInstance()
{
// The only instance
// Guaranteed to be lazy initialized
// Guaranteed that it will be destroyed correctly
static MySingleton instance;
return instance;
}
};
ঠিক আছে. একসাথে কিছু সমালোচনা এবং অন্যান্য বাস্তবায়ন পেতে দিন।
:-)