1

消費者用と法人用の 2 種類の請求書があります。消費者請求書とビジネス請求書の両方が継承する「請求書」抽象クラスを作成しました。コンシューマー請求書はコンシューマー エンティティを参照し、ビジネス インボイスはビジネス エンティティを参照します。

これは完全に機能しますが、コンテキストクラスに「請求書」のコレクションがあると問題が発生します。(これには、基本的に消費者および企業の請求書が含まれます)。「Business」オブジェクトまたは「Consumer」オブジェクトへの参照を取得できません。(完全に理にかなっています...しかし、私はこの問題をどのように回避するのか疑問に思っていましたか?私はそれがかなり一般的なシナリオだと思いますか?)

「受信者」オブジェクトを返す「GetInvoiceRecipient」という抽象クラスに新しいメソッドを作成するだけですか? ただし、このソリューションの唯一の問題は、特定の消費者または特定のビジネスの請求書を取得できないことです。

4

2 に答える 2

0

このシナリオでは、管理クラスを使用する傾向があります。つまり、Consumer、Business、またはインターフェイス IInvoice を実装するクラスなど、多数のクラスを含むディクショナリを含むクラスです。管理クラスは、Add(IInvoice, key) や Lookup(key) などのパブリック メソッドを IInvoice として持つことができます。

継承モデルに関しては、一般的により柔軟なオプションであるため、代わりにコンポジションを検討することをお勧めします。オブジェクト指向設計に関連する構成とは何ですか? ただし、サブクラスが2つしかない場合は問題ではないと確信しています。

于 2013-10-31T23:40:52.393 に答える