比方说,如果在我们的对象设计中,已经有一个Car类,现在有一些汽车对象就是敞篷车。
我们可以定义另一个 classConvertible和 subclass Car,但是假设我们稍后创建一个 class that is FourWheelDrivethat 也是 subclasses Car,然后,如果我们有 a FourWheelDrivethat is also a Convertible,那么我们该如何处理呢?
上面的设计与其他设计相比如何,它是类isConvertible中的布尔值,Car类中isFourWheelDrive也是布尔值Car,就像类的标志或属性一样Car。所以在这种情况下我们不会定义额外的类。
更新:在一个真实的例子中,在我们的项目中,有一个Credential类存储用户的信息:user_id、encrypted_password、email_address 等。当我们允许通过 Facebook、Gmail、Yahoo、MySpace(使用 JanRain)登录时,同事建议添加FacebookCredential, GmailCredential, YahooCredential, 所有这些子类Credential. 我有点不知所措,有这么多类,当你看到一个方法时,你必须看看是子类覆盖了它还是基类的方法。我会使用一个代码来告诉它是哪个凭据提供者(Facebook、Gmail 等),并使用这个提供者代码来做适当的事情。(例如,有些提供商已经验证了电子邮件地址,有些则没有)。所以我只是不知道我同事的方法是否更合适或更复杂。