একটি ইন্টারফেস বিবেচনা করুন:
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
গুলি।