প্রথমে, বুঝতে হবে যে একটি খাঁটি বিমূর্ত শ্রেণি সত্যিই কেবল একটি ইন্টারফেস যা একাধিক উত্তরাধিকার করতে পারে না।
ক্লাস লিখুন, এক্সট্রাক্ট ইন্টারফেস, এটি একটি মস্তিষ্কের মৃত ক্রিয়াকলাপ। এত বেশি যে আমাদের এটির জন্য একটি চুল্লি রয়েছে। যা দুঃখজনক। এই "প্রতিটি শ্রেণি একটি ইন্টারফেস পায়" প্যাটার্ন অনুসরণ করে কেবল বিশৃঙ্খলা তৈরি হয় না এটি সম্পূর্ণভাবে পয়েন্টটি মিস করে।
একটি ইন্টারফেস কেবল শ্রেণি যা কিছু করতে পারে তার একটি আনুষ্ঠানিক পুনর্নির্মাণ হিসাবে ভাবা উচিত নয়। একটি ইন্টারফেসটি ক্লায়েন্ট কোডগুলি এর প্রয়োজনগুলির বিশদটি ব্যবহার করে চাপিয়ে দেওয়া চুক্তি হিসাবে ভাবা উচিত।
আমার একটি ইন্টারফেস লেখার মোটেও সমস্যা নেই যা বর্তমানে কেবলমাত্র একটি শ্রেণি প্রয়োগ করছে। কোনও ক্লাস এখনও এটিকে প্রয়োগ করে না সে বিষয়ে আমি আসলেই চিন্তা করি না। কারণ আমি আমার ব্যবহার কোডটি কী প্রয়োজন তা নিয়ে ভাবছি। ইন্টারফেসটি ব্যবহার কোডটি যা দাবি করে তা প্রকাশ করে। পরে যা কিছু আসে তা যতক্ষণ পছন্দ করে তা করতে পারে যতক্ষণ না এই প্রত্যাশাগুলি সন্তুষ্ট করে।
এখন আমি এটি প্রতিবারই করি না যখন একটি বস্তু অন্য জিনিস ব্যবহার করে। একটি সীমানা পেরোনোর সময় আমি এটি করি। আমি এটি করি যখন আমি কোন বস্তুটি ঠিক অন্য কোন অবজেক্টের সাথে কথা বলে তা না জানতে চাই। পলিমারফিজমটি একমাত্র উপায় কাজ করবে। আমার ক্লায়েন্ট কোডটি যে বস্তুটির সাথে কথা বলেছে এটি পরিবর্তিত হওয়ার সম্ভাবনা রয়েছে বলে আমি যখন প্রত্যাশা করি তখন আমি এটি করি। আমি যখন স্ট্রিং ক্লাস ব্যবহার করি তখন অবশ্যই আমি এটি করি না। স্ট্রিং ক্লাসটি দুর্দান্ত এবং স্থিতিশীল এবং এটি আমার উপর পরিবর্তনের থেকে রক্ষা করার কোন প্রয়োজন অনুভব করছি।
আপনি যখন কোনও কংক্রিট বাস্তবায়নের সাথে সরাসরি ইন্টারঅ্যাকশন করার সিদ্ধান্ত নেন তখন কোনও বিমূর্ততার মাধ্যমে আপনি ভবিষ্যদ্বাণী করে থাকেন যে বাস্তবায়নটি পরিবর্তন না করার আস্থা রাখতে যথেষ্ট স্থিতিশীল।
ঠিক সেইভাবেই আমি নির্ভরতা বিপরীতার নীতিটি মেতে উঠি । আপনার চোখ ধাঁধা দিয়ে সমস্ত কিছুতে এটি প্রয়োগ করা উচিত নয়। আপনি যখন কোনও বিমূর্ততা যুক্ত করেন আপনি সত্যই বলে যাচ্ছেন যে আপনি প্রকল্পের জীবনে স্থিতিশীল হওয়ার জন্য প্রয়োগকারী শ্রেণীর পছন্দকে বিশ্বাস করেন না।
এটি সমস্তই ধরে নেয় আপনি ওপেন ক্লোজড নীতি অনুসরণ করার চেষ্টা করছেন । এই নীতিটি কেবল তখনই গুরুত্বপূর্ণ যখন প্রতিষ্ঠিত কোডে সরাসরি পরিবর্তন আনার সাথে যুক্ত ব্যয়গুলি উল্লেখযোগ্য। ডেকপলিং অবজেক্টগুলি কীভাবে গুরুত্বপূর্ণ তা নিয়ে লোকেরা দ্বিমত পোষণ করার অন্যতম প্রধান কারণ কারণ প্রত্যক্ষ পরিবর্তন করার সময় প্রত্যেকে একই ব্যয় ভোগ করে না। যদি আপনার পুরো কোড বেসটি পুনরায় পরীক্ষা, পুনরায় সংবিধান এবং পুনরায় বিতরণ করা আপনার কাছে তুচ্ছ হয় তবে সরাসরি পরিবর্তনের প্রয়োজনের সমাধান করা সম্ভবত এই সমস্যার খুব আকর্ষণীয় সরলীকরণ is
এই প্রশ্নের কোনও মস্তিষ্কের মৃত উত্তর নেই। একটি ইন্টারফেস বা বিমূর্ত শ্রেণি এমন কিছু নয় যা আপনাকে প্রতিটি শ্রেণিতে যুক্ত করা উচিত এবং আপনি কেবল প্রয়োগকারী শ্রেণীর সংখ্যা গণনা করতে পারেন এবং এটির প্রয়োজন নেই তা স্থির করতে পারেন। এটি পরিবর্তন নিয়ে কাজ করার বিষয়ে। যার অর্থ আপনি ভবিষ্যতের প্রত্যাশা করছেন। ভুল হয়ে গেলে অবাক হবেন না। কোনও কোণে নিজেকে সমর্থন না করে আপনি যেমন পারেন ঠিক তেমন রাখুন।
সুতরাং দয়া করে কেবল কোডটি পড়তে আমাদের সহায়তা করতে বিমূর্তি লিখবেন না। আমাদের এটির জন্য সরঞ্জাম রয়েছে। ডিউপলিংয়ের কী দরকার তা ডিকুয়াল করতে বিমূর্ততা ব্যবহার করুন।