মূল বিষয়টি CharSequenceহ'ল একটি চরিত্রের ক্রমকে কেবল পঠনযোগ্য দর্শন সরবরাহ করা এবং এটিই। এই ইন্টারফেসটি কোনও স্ট্রিং ম্যানিপুলেশন বা অনুসন্ধানের পদ্ধতি সরবরাহ করে না। এগুলি সুযোগের বাইরে।
ইন্টারফেস বিভাজন নীতিটি প্রস্তাব দেয় যে কোনও ধরণের ক্লায়েন্টরা তাদের ব্যবহার না করা পদ্ধতিগুলির উপর নির্ভর করে না। সুতরাং, একটি ইন্টারফেস কেবল সর্বনিম্ন দরকারী সেট ঘোষণা করা উচিত। যদি কোনও ভিন্ন ব্যবহারের ক্ষেত্রে বিভিন্ন পদ্ধতির প্রয়োজন হয় তবে আলাদা ইন্টারফেস থাকতে হবে।
কেবলমাত্র একটি অক্ষর উত্স প্রয়োজন এমন ক্লায়েন্টের জন্য অনুসন্ধান পদ্ধতিগুলির প্রয়োজন নেই।
অবশ্যই এই নীতিটি অতিরঞ্জিত করা এবং এক হাজার ছোট ইন্টারফেস দিয়ে শেষ করা সম্ভব। এটিও ভাল নয়। সুতরাং CharSequenceইন্টারফেসটি কেবল সর্বনিম্ন charAt()এবং length()পদ্ধতিগুলিই ধারণ করে না , তবে গভীরভাবে সম্পর্কিত সুবিধার্থেও রয়েছে subSequence()। (একটি চারসিক্যেন্স সম্ভবত কোনও স্ট্রিং অনুলিপি ছাড়াই একটি উপসর্গের দিকে একটি ভিউ সরবরাহ করতে পারে, যার কারণে এটি একটি উদাহরণ পদ্ধতি হওয়া উচিত)। উল্লেখ toString()করা ঠিক আছে কারণ সেই পদ্ধতিটি যেভাবেই হতে পারে Object। পদ্ধতি chars()এবং একটি ইন্টারফেস একটি codePoints()অভিযোজিত । যেহেতু এগুলি ডিফল্ট পদ্ধতি, তারা ক্লাস প্রয়োগকারীগুলির জন্য অতিরিক্ত প্রয়োজনীয়তা চাপায় না ।CharSequenceStreamCharSequence
এই CharSequenceধরণেরটি কার্যকর হয় যখন কোনও পদ্ধতিতে নির্দিষ্ট প্রয়োগের নির্দিষ্টকরণ ছাড়াই জেনেরিক চরিত্রের উত্সের প্রয়োজন হয় (উদাহরণস্বরূপ স্ট্রিং বনাম চারবুফার বনাম স্ট্রিংবুডার)। String#join()এবং String#contains()পদ্ধতি ব্যবহার করে ভাল উদাহরণ CharSequenceগুলি।
CharSequenceকোনও contains()পদ্ধতি সরবরাহের জন্য এটি প্রয়োজনীয় নয় কারণ এটি বাহ্যিকভাবে প্রয়োগ করা যেতে পারে। জাভাতে সি # এর সম্প্রসারণ পদ্ধতির সুবিধা না থাকলেও একটি স্থির পদ্ধতি মূলত একই জিনিস। পরিবর্তে boolean Editable#contains(CharSequence needle)আপনি একটি ছিল static boolean contains(CharSequence haystack, CharSequence needle)। স্ট্রিং অনুসন্ধান অ্যালগরিদমগুলি একটি কম্পিউটারের বিজ্ঞানের একটি সুপরিচিত বিষয়। বিভিন্ন ট্রেড অফসের সাথে বিভিন্ন অ্যালগরিদম সহজেই উপলব্ধ।
আরও পড়া:
containsএকটা পরিবর্তন ঘটে পদ্ধতি নয়, এবং সেখানে নেই থাকবেই অনুসন্ধানের পদ্ধতি (charAt), সুতরাং কিভাবে এই প্রযোজ্য ?. এছাড়াও, " এগুলি ডিফল্ট পদ্ধতি হওয়ায় তারা CharSequence প্রয়োগকারী ক্লাসগুলির জন্য অতিরিক্ত প্রয়োজনীয়তা আরোপ করে না " "- ক্লাসগুলি প্রয়োগের জন্য প্রয়োজনীয়তা সরিয়ে ইমপ্লেরcontainsমাধ্যমে ডিফল্ট হিসাবে প্রয়োগ করা যায়নিreturn to String().contains(...)?