সংমিশ্রণটি যখন কোনও শ্রেণি একটি (সম্ভবত অভ্যন্তরীণ) বর্গ ইনস্ট্যান্ট করে কিছু কার্যকারিতা সরবরাহ করে যা ইতিমধ্যে এই শ্রেণিটি থেকে উত্তরাধিকার সূত্রে পরিবর্তনের পরিবর্তে এই কার্যকারিতাটি প্রয়োগ করে।
সুতরাং, উদাহরণস্বরূপ, যদি আপনার কাছে কোনও শ্রেণি থাকে যা কোনও জাহাজের মডেল করে, এবং এখন আপনাকে বলা হচ্ছে যে আপনার জাহাজটি হেলিপ্যাড সরবরাহ করবে, পরিবর্তে আপনার জাহাজটি হেলিপ্যাড থেকে নেওয়া (স্বাভাবিক), আপনার উচিত হবে আপনার জাহাজে হেলিপ্যাড শ্রেণি রয়েছে এবং এটি কোনও Ship.getHelipad()
পদ্ধতির মাধ্যমে প্রকাশ করে ।
বছরের পর বছরগুলিতে (এক দশক বা তার আগের) লোকেরা উত্তরাধিকারকে একীভূত কার্যকারিতার দ্রুত এবং সহজ উপায় হিসাবে দেখত, সুতরাং "হেলিপ্যাডের উত্তরাধিকার সূত্রে প্রাপ্ত জাহাজের" উদাহরণ রয়েছে যা অবশ্যই খুব খোঁড়া ছিল।
তবে "ফেভারিটেস কমপোজেশন ওভার ইন হেরিট্যান্স" ডিকুমটি সাবধানতার সাথে বলা হয়েছে যে এটি নিয়ম নয়, এটি কেবল একটি পরামর্শ। ডোকমের লেখক "আপনি কখনও উত্তরাধিকার ব্যবহার করবেন না , কেবল রচনা" এর মতো কিছু বলা থেকে বিরত থাকতে যথেষ্ট সতর্ক ছিলেন । এটি মূলত সফ্টওয়্যার ইঞ্জিনিয়ারিং সম্প্রদায়ের নজরে এনেছে যে উত্তরাধিকার অতিরিক্ত ব্যবহার করা হয়েছে, অন্যদিকে বেশিরভাগ ক্ষেত্রে রচনা উত্তরাধিকারের চেয়ে আরও সুস্পষ্ট, মার্জিত এবং রক্ষণাবেক্ষণের নকশা তৈরি করে।
সুতরাং, মূলত, "উত্তরাধিকারের পক্ষে ফেভারিটে কম্পোজিশন" ডিকুমটি পরামর্শ দিচ্ছে যে যখনই আপনি "উত্তরাধিকারী হওয়া বা রচনা করার জন্য" মুখোমুখি হন? প্রশ্ন, আপনার সবচেয়ে কার্যকর কৌশলটি কী তা কঠোরভাবে চিন্তা করা উচিত এবং সর্বাধিক সম্ভাবনা হ'ল যে সবচেয়ে উপযুক্ত কৌশলটি উত্তরাধিকার নয়, রচনায় পরিণত হবে।
তবে যেহেতু এটি কোনও নিয়ম নয়, আপনার এও মনে রাখা উচিত যে এমন অনেকগুলি ক্ষেত্রে রয়েছে যেখানে উত্তরাধিকার বেশি প্রাকৃতিক। যদি আপনি সেখানে রচনা ব্যবহার করেন যেখানে আপনার উত্তরাধিকার ব্যবহার করা উচিত ছিল, আপনার কোডে অনেকগুলি খারাপ কাজ হবে।
জাহাজের উদাহরণে ফিরে যেতে, যদি আপনার জাহাজটির সাথে ইন্টারঅ্যাক্ট করার জন্য কোনও ইন্টারফেসের প্রয়োজন হয় FloatingMachine
, তবে এটি একটি বিমূর্ত FloatingMachine
শ্রেণীর কাছ থেকে নেওয়া আরও স্বাভাবিক , সম্ভবত এটি সম্ভবত অন্য বিমূর্ত Machine
শ্রেণীর কাছ থেকে নেওয়া হতে পারে ।
রচনা বনাম উত্তরাধিকার প্রশ্নের উত্তরের জন্য এখানে থাম্বের বিধি রয়েছে:
আমার ক্লাসটির যে ইন্টারফেসটি প্রকাশ করতে হবে তার সাথে "একটি" সম্পর্ক রয়েছে? যদি হ্যাঁ, উত্তরাধিকার ব্যবহার করুন। যদি না হয়, রচনা ব্যবহার করুন।
একটি জাহাজ "একটি" ভাসমান মেশিন এবং একটি ভাসমান যন্ত্র "একটি" মেশিন। সুতরাং, উত্তরাধিকার তাদের জন্য পুরোপুরি ঠিক আছে। তবে একটি জাহাজ অবশ্যই হেলিপ্যাড নয়। সুতরাং এটি হেলিপ্যাডের কার্যকারিতা আরও ভালভাবে রচনা করুন।