একটি ইন্টারফেস বিবেচনা করুন:
interface IWaveGenerator
{
SoundWave GenerateWave(double frequency, double lengthInSeconds);
}
এই ইন্টারফেসটি বিভিন্ন শ্রেণীর দ্বারা প্রয়োগ করা হয় যা বিভিন্ন আকারের তরঙ্গ উত্পন্ন করে (উদাহরণস্বরূপ, SineWaveGeneratorএবং SquareWaveGenerator)।
আমি এমন একটি ক্লাস বাস্তবায়ন করতে চাই যা SoundWaveসংগীত উপাত্তের উপর ভিত্তি করে উত্পন্ন করে, কাঁচা সাউন্ড ডেটা নয়। এটি একটি নোটের নাম এবং প্রহারের ক্ষেত্রে একটি দৈর্ঘ্য (সেকেন্ড নয়) পাবে এবং অভ্যন্তরীণভাবে সেই অনুযায়ী IWaveGeneratorতৈরি করতে কার্যকারিতাটি ব্যবহার করবে SoundWave।
প্রশ্ন হচ্ছে, উচিত NoteGeneratorএকটি ধারণ IWaveGeneratorবা এটি একটি থেকে উত্তরাধিকারী উচিত IWaveGeneratorবাস্তবায়ন?
আমি দুটি কারণে রচনার দিকে ঝুঁকছি:
1- এটা আমার কোনো উদ্বুদ্ধ করতে পারবেন IWaveGeneratorকরার NoteGeneratorপরিবর্তনশীল। এছাড়াও, আমি শুধুমাত্র এক প্রয়োজন NoteGeneratorবর্গ, পরিবর্তে SineNoteGenerator, SquareNoteGeneratorইত্যাদি
2- NoteGeneratorদ্বারা সংজ্ঞায়িত নিম্ন-স্তরের ইন্টারফেসটি প্রকাশ করার দরকার নেই IWaveGenerator।
তবে আমি এই সম্পর্কিত অন্যান্য মতামত শুনতে এই প্রশ্নটি পোস্ট করছি, সম্ভবত পয়েন্টগুলি যা আমি ভেবে দেখিনি।
BTW: আমি বলব NoteGenerator হয় ধারণার দিক থেকে একটি IWaveGeneratorকারণ তা উত্পন্ন SoundWaveগুলি।