Bir arayüz düşünün:
interface IWaveGenerator
{
SoundWave GenerateWave(double frequency, double lengthInSeconds);
}
Bu arayüz, farklı şekillerdeki dalgaları (örneğin SineWaveGeneratorve SquareWaveGenerator) üreten birkaç sınıf tarafından uygulanır .
SoundWaveHam ses verilerine değil, müzik verilerine dayanan bir sınıf uygulamak istiyorum . Bir notun adını ve vuruş sayısı (saniye değil) cinsinden bir uzunluğunu alır ve buna göre IWaveGeneratoroluşturmak için dahili olarak işlevselliği kullanır SoundWave.
Soru şudur, NoteGeneratoriçerme IWaveGeneratorbir IWaveGeneratoruygulamadan mı yoksa bir uygulamadan miras almalı mı?
İki nedenden dolayı kompozisyona yöneliyorum:
1- Bu beni herhangi enjekte sağlar IWaveGeneratorüzere NoteGeneratordinamik. Ayrıca, sadece bir ihtiyaç NoteGeneratoryerine sınıfını, SineNoteGenerator, SquareNoteGeneratorvb
2- NoteGeneratortarafından tanımlanan alt seviye arayüzü ortaya çıkarmaya gerek yoktur IWaveGenerator.
Ancak bu soruyu, belki de hiç düşünmediğim diğer fikirleri duymak için gönderiyorum.
BTW: söyleyebilirim NoteGenerator olan bir kavramsal IWaveGeneratoroluşturduğu çünkü SoundWaves.