সার্ভিস লোকেটার বলতে গেলে দু'টি খারাপের চেয়ে কম হয় ser এই চারটি পার্থক্যে "কম" সেদ্ধ হয়ে উঠছে ( কমপক্ষে আমি এখনই অন্য কাউকে ভাবতে পারি না ):
একক দায়িত্বের নীতি
পরিষেবা কনটেইনার সিঙ্গলটনের মতো একক দায়িত্বের নীতি লঙ্ঘন করে না। সিঙ্গলেটগুলি অবজেক্ট তৈরি এবং ব্যবসায়ের যুক্তি মিশ্রিত করে, যখন পরিষেবা কন্টেইনার আপনার অ্যাপ্লিকেশনটির অবজেক্টের লাইফসাইকেলগুলি পরিচালনা করার জন্য কঠোরভাবে দায়বদ্ধ। সে ক্ষেত্রে পরিষেবা কনটেইনারটি আরও ভাল।
কাপলিং
স্ট্যাটিক পদ্ধতি কলগুলির কারণে সিঙ্গেলনগুলি সাধারণত আপনার অ্যাপ্লিকেশনটিতে হার্ডকোড হয়, যা আপনার কোডে দৃ tight় দম্পতি এবং শক্তিকে নির্ভর করতে পারে । অন্যদিকে এসএল কেবল একটি শ্রেণি এবং এটি ইনজেকশন দেওয়া যেতে পারে। সুতরাং আপনার সমস্ত শ্রেণিবদ্ধতা যখন এর উপর নির্ভর করবে তবে কমপক্ষে এটি একটি স্বচ্ছল যুগল নির্ভরতা। সুতরাং আপনি যদি সার্ভিস লোকেটারকে নিজেই সিঙ্গলটন হিসাবে প্রয়োগ করেন না তবে এটি কিছুটা ভাল এবং এটি পরীক্ষা করা আরও সহজ।
যাইহোক, সার্ভিস লোকেটার ব্যবহার করে সমস্ত শ্রেণি এখন সার্ভিস লোকেটারের উপর নির্ভর করবে, এটিও কাপলিংয়ের একটি রূপ। সার্ভিসলোকেটারের জন্য একটি ইন্টারফেস ব্যবহার করে এটি প্রশমিত করা যায় যাতে আপনি কংক্রিট সার্ভিস লোকেশন প্রয়োগের জন্য বাধ্য নন তবে আপনার ক্লাসগুলি কোনও ধরণের লোকেটারের অস্তিত্বের উপর নির্ভর করবে যখন কোনও সার্ভিস লোকেশন ব্যবহার না করে নাটকীয়ভাবে পুনরায় ব্যবহার করুন।
লুকানো নির্ভরতা
নির্ভরতা গোপনের সমস্যাটি খুব উপস্থিত রয়েছে যদিও। আপনি যখন আপনার গ্রাসকারী ক্লাসে কেবলমাত্র লোকেটারটি ইনজেক্ট করেন, আপনি কোনও নির্ভরতা জানেন না। তবে সিঙ্গলটনের বিপরীতে, এসএল সাধারণত পর্দার অন্তর্ভুক্ত সমস্ত নির্ভরতা তাত্ক্ষণিক করে তুলবে। সুতরাং আপনি যখন কোনও পরিষেবা আনেন , আপনি মিসকো হেভির মতো ক্রেডিটকার্ড উদাহরণে শেষ করবেন না , যেমন আপনাকে নির্ভরতার সমস্ত অবক্ষয়কে হাত দিয়ে ইনস্ট্যান্ট করতে হবে না।
উদাহরণের অভ্যন্তর থেকে নির্ভরতা আনতেও ডেমিটারের আইন লঙ্ঘন করা হচ্ছে , যাতে বলা হয়েছে যে আপনাকে সহযোগীদের মধ্যে খনন করা উচিত নয়। একটি উদাহরণে কেবল তার তাত্ক্ষণিক সহযোগীদের সাথে কথা বলা উচিত। এটি সিঙ্গলটন এবং সার্ভিসলোকেটার উভয়েরই সমস্যা।
গ্লোবাল স্টেট
গ্লোবাল স্টেটের সমস্যাটি কিছুটা প্রশমিতও করা হয়েছে কারণ আপনি যখন পরীক্ষার মধ্যে একটি নতুন সার্ভিস লোকেটার ইনস্ট্যান্ট করেন তখন পূর্ববর্তী তৈরি সমস্ত দৃষ্টান্তও মুছে ফেলা হয় (যদি আপনি ভুল না করে এবং এসএল-এর স্থির বৈশিষ্ট্যে সংরক্ষণ না করেন)। অবশ্যই এসএল দ্বারা পরিচালিত ক্লাসে কোনও বিশ্ব রাষ্ট্রের পক্ষে এটি সত্য নয়।
আরও গভীরতর আলোচনার জন্য সার্ভিস লোকেটার বনাম নির্ভরশীল ইনজেকশন সম্পর্কিত ফওলারটি দেখুন see
আপনার আপডেটের উপর একটি নোট এবং সেবাস্তিয়ান বার্গম্যানের সংযুক্ত নিবন্ধ যা টেস্টিং কোডে সিঙ্গেলন ব্যবহার করে: সেবাস্তিয়ান কোনও উপায়েই পরামর্শ দেয় না যে প্রস্তাবিত কাজটি সিঙ্গেলনকে কোনও সমস্যার কম ব্যবহার করে। কোড তৈরির কেবল একটি উপায় যা অন্যথায় আরও পরীক্ষামূলকভাবে পরীক্ষা করা অসম্ভব। তবে এটি এখনও সমস্যাযুক্ত কোড। প্রকৃতপক্ষে, তিনি স্পষ্টভাবে নোট করেছেন: "জাস্ট কারণ আপনি পারবেন, না এর মানে আপনি হওয়া উচিত"।