私は3つのクラス、A
、B
を持っている、とB
はA
とC
あるC
はA
です。これらのクラスは履歴を保持するように設計されているため、A
は、ヒストリをアーカイブするときに派生クラスが作成する仮想メソッドを提供します。void archive()
と呼ばれます。多重継承の設計実装
突然、A
,B
、C
の情報を1つのクラスにまとめておく必要があります。私は最良のアプローチについてはわかりません。
私はB
とC
から継承する新しいクラスD
を作成し、diamond problemを避け、D::archive()
は、単にB::archive()
とC::archive()
を呼び出す持ってvirtual public A
に彼らの継承を変更することを考えました。
これは良いアプローチですか?または、複数の継承を使用しないように4つのクラスを再設計する必要がありますか?
「今や、A、B、Cからの情報を単一のクラスに入れる必要があります - それが悪の根です。あなたは正確に何を達成しようとしていますか? –
'B'と' C'の情報は非常に異なっており、3つのクラスすべての情報の必要性を想像も想像もしませんでした。しかし、もちろん、数年後、誰かが頭の中で「クール」なアイデアを持っていて、インターフェイスが機能しないので、私はそれを変更するための最良の方法を見つけようとしています。 – steveo225
これを抽象的に理由づけるのは難しいです。一般的に、継承の代わりに構成を考えても構いませんが、具体的な内容に依存します。それが適切であれば、MIは良いかもしれません。 –