我想知道“最干净”的面向对象的方法是区分具有1个额外属性的对象。
一个例子: 假设你有一个奖项。 这个类有2个子类:individualAward,bandAward。
我想以一种活跃于不到x年的个人和乐队获得新人奖而不是常规奖的方式来区分奖项。
问题: 我在哪里实现newcomer属性? 我是否会制作2个新课程(没有其他功能),IndividualNewcomerAward和bandNewcomerAward?我是否像isNewcomerCategory一样在Award类中添加一个字段?
我不知道OO的解决方案是什么。
答案 0 :(得分:2)
如果每个奖项都可以成为新人奖项,请将该字段添加到奖项类别中。如果只有部分可以,可以在那里添加,并可能使用isNewcomer方法创建一个接口,并将其添加到相应的奖励类中。 实施可能取决于您使用的语言。
答案 1 :(得分:1)
您当然不希望为每个新属性引入新类,因此我会向父类添加一个属性。或者添加属性activeSince
和方法isNewcomer()
。