たとえば、オブジェクトデザインにすでにCar
クラスがあり、コンバーチブルの車のオブジェクトがいくつかあるとします。
Convertible
別のクラスとサブクラスを定義することもできますが、たとえば、後でサブクラスでもあるCar
クラスを作成し、後で、それでもあるクラスがある場合、それをどのように処理できますか?FourWheelDrive
Car
FourWheelDrive
Convertible
上記のデザインは、クラスのフラグまたはプロパティと同じように、クラス内のブール値、およびクラスisConvertible
内のブール値である他のデザインと比較してどうですか。したがって、この場合、追加のクラスを定義しません。Car
isFourWheelDrive
Car
Car
更新:実際の例では、私たちのプロジェクトではCredential
、ユーザーの情報を格納するクラスがありました:user_id、encrypted_password、email_addressなど。Facebook、Gmail、Yahoo、MySpace(JanRainを使用)、同僚からのログインを許可する場合サブクラス化するこれらすべてのクラスを追加することFacebookCredential
を提案しましたGmailCredential
YahooCredential
Credential
。クラスがたくさんあることに少し圧倒されました。メソッドを見るときは、サブクラスがそれをオーバーライドするのか、それとも基本クラスのメソッドなのかを確認する必要があります。コードを使用してクレデンシャルのプロバイダー(Facebook、Gmailなど)を通知し、このプロバイダーコードを使用して適切な処理を実行します。(たとえば、一部のプロバイダーは電子メールアドレスを確認しましたが、一部は確認していません)。ですから、同僚の方法がより適切か複雑かはわかりません。