考虑一个接口:
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。
但是,我发布此问题是为了听取对此的其他意见,也许是我没有想到的要点。
顺便说一句:我会说NoteGenerator 从概念上讲是an,IWaveGenerator因为它生成SoundWaves。