ইদানীং সিঙ্গেলনের বিরুদ্ধে একধরনের বিপ্লব হয়েছে, তবে তারা রাষ্ট্রহীন হলে তাদের কি কিছু ভুল আছে?
আমি অত্যধিক ব্যবহারের কথা এবং সমস্ত জানি ... এটি কেবলমাত্র সিলেটলেট নয়, সমস্ত কিছুর জন্য প্রযোজ্য।
ইদানীং সিঙ্গেলনের বিরুদ্ধে একধরনের বিপ্লব হয়েছে, তবে তারা রাষ্ট্রহীন হলে তাদের কি কিছু ভুল আছে?
আমি অত্যধিক ব্যবহারের কথা এবং সমস্ত জানি ... এটি কেবলমাত্র সিলেটলেট নয়, সমস্ত কিছুর জন্য প্রযোজ্য।
উত্তর:
> Are immutable/stateless singletons bad?
আরও তথ্যের জন্য দেখুন -পেঁয়াজ-আর্কিটেকচার
আমি সিলেটলেট ব্যবহার না করার অন্যান্য কারণগুলি দেখতে পাচ্ছি না।
এটি সর্বদা ব্যবহারের উপর নির্ভর করে। আমি বিপ্লবের, আসলে থেকে আসে যে প্রতি প্রোগ্রামার হিসেবে এই প্যাটার্ন শিখে মনে অবজেক্ট ওরিয়েন্টেড প্যাটার্ন। এটি কোথায় সার্থক হয় এবং কোথায় তা বোঝে না তা ভেবে বেশিরভাগই ভুলে যান।
এটি অবশ্যই প্রতিটি প্যাটার্নের জন্য সত্য। নিদর্শনগুলি ব্যবহার করে আপনি ভাল কোড বা ভাল সফ্টওয়্যার তৈরি করেন না।
আপনার যদি স্টেটলেস সিঙ্গলটন থাকে তবে কেন কেবল স্ট্যাটিক পদ্ধতিতে অফার করা ক্লাস ব্যবহার করবেন না (বা স্ট্যাটিক ক্লাস ব্যবহার করবেন)?
এখানে সাধারণভাবে গ্লোবাল ভেরিয়েবল এবং সিলেটলেট সম্পর্কিত কিছু পোস্ট।
আমি লেখকের মতো কঠোর হতে চাই না তবে তিনি দেখিয়েছেন যে বেশিরভাগ ক্ষেত্রে যেখানে আপনি মনে করেন যে আপনাকে সিঙ্গলটন প্রয়োজন, সেখানে আপনার সত্যিকার প্রয়োজন নেই।
স্থিতিশীল শ্রেণি যা করতে পারে তা তেমন কিছুই নেই যা অপরিবর্তনীয় স্টেটলেস সিঙ্গলটন করতে পারে।
জটিলতার অতিরিক্ত স্তর যুক্ত করার কোনও কারণ নেই যা -> দৃষ্টান্ত () সৃষ্টি করে, যখন একটি স্ট্যাটিক পদ্ধতিতে সরল কল স্পষ্টতর হয়, সম্পদের ক্ষেত্রে আরও রক্ষণশীল এবং সম্ভবত দ্রুততর হয়।
তারা ভুল যে এটা না। এটি করার আরও ভাল উপায় আছে। এমন পরিস্থিতিতে রয়েছে যেখানে স্বাভাবিক ("রাষ্ট্রীয়") সিঙ্গেলনগুলি যাওয়ার সঠিক উপায়। সিঙ্গলটনের সাথে খারাপটি হ'ল তারা প্রায়শই গালাগালি করে থাকে, বৈশ্বিক ভেরিয়েবলগুলির মতো একই খারাপ ফলাফল সহ, তবে নির্দিষ্ট ক্ষেত্রে রয়েছে যেখানে সিঙ্গলটন ব্যবহার করা সহজ। রাষ্ট্রহীনদের জন্য এরকম কোনও মামলা নেই।
সিঙ্গলটনের প্রধান সমস্যাটি হ'ল ক্রস কাটিয়া উদ্বেগের দৃশ্যে ব্যবহৃত হলে এটি নির্ভরশীলতা এবং সংযুক্তিকে স্পষ্টভাবে লুকায়। দেখুন Singletons আবেগপূর্ণ মিথ্যাবাদী বা কেন Singletons ইভিল হয় আরো পড়ার জন্য।
অন্য দিক থেকে, কোনও রাজ্য কম সিঙ্গলটন, যদি অপব্যবহার না করা হয় তবে এটি কার্যকর হতে পারে এবং কার্য সম্পাদনকে উন্নত করতে পারে। একটি উদাহরণ বিবেচনা করুন:
interface Interface
{
void Method();
}
class StatelessSingleton : Interface
{
public static readonly StatelessSingleton Instance = new StatelessSingleton();
private StatelessSingleton() { }
public void Method() { }
}
class User
{
public User(Interface i) { /* ... */ }
}
এখানে স্টেটলেসসিংলেটন ইন্টারফেসের ডিফল্ট প্রয়োগ হিসাবে কাজ করে এবং ব্যবহারকারী নির্মাতার মধ্যে রাখে। কোনও হার্ড-কোডড কাপলিং এবং লুকানো নির্ভরতা নেই। অন্তর্নিহিত ইন্টারফেসের কারণে আমরা একটি স্ট্যাটিক ক্লাস ব্যবহার করতে অক্ষম তবে ডিফল্টর একাধিক উদাহরণ তৈরি করার কোনও কারণ নেই। এজন্য একটি স্টেটলেস সিঙ্গলটন উপযুক্ত পছন্দ বলে মনে হচ্ছে।
তবে, সম্ভবত আমাদের একটি ডিফল্ট প্রয়োগের জন্য অন্য প্যাটার্ন ব্যবহার করা উচিত:
class Implementation : Interface
{
private readonly Action _method;
public Implementation()
{
_method = new Action(() => { /* default */ });
}
public Implementation(Action custom)
{
_method = custom;
}
public void Method()
{
_method();
}
}
এটি স্টেটলেসসিংলেটনের প্রতি শ্রদ্ধা প্রদর্শন করে তবে ইন্টারফেসের একটি জেনেরিক বাস্তবায়ন গঠন করে। অনুরূপ সমাধান আইপ্রোগ্রেস ইন্টারফেস দ্বারা ব্যবহৃত হয় ।
আবার যথেষ্ট, কেন ডিফল্ট আচরণের একাধিক বাস্তবায়ন তৈরি করার অনুমতি দেয়? তবুও আমরা দুটি একত্রিত করতে পারি:
class Implementation : Interface
{
public readonly Implementation Default = new Implementation();
private readonly Action _method;
private Implementation()
{
_method = new Action(() => { /* default */ });
}
public Implementation(Action custom)
{
_method = custom;
}
public void Method()
{
_method();
}
}
উপসংহারে, আমি বিশ্বাস করি যে স্থানগুলি রয়েছে (চিত্রিত পূর্বনির্ধারিত হিসাবে) যেখানে সিঙ্গললেটগুলি কার্যকর। সিঙ্গেলনের মূল সংজ্ঞাটিতে বলা হয়েছে যে এটি একটি শ্রেণীর একাধিক উদাহরণ তৈরি করতে অস্বীকার করে । এটি পারমাণবিক শক্তি হিসাবে। একটি শক্তি বা বোমা উত্পাদন করতে পারে। এটি মানুষের উপর নির্ভর করে।