3
同じエンティティを異なるテーブルにマッピングする
ドメインに関する知識 商品の支払いや払い戻しを可能にするPOS(Point Of Sales)ソフトウェアを書いています。支払いまたは払い戻しの際、使用する送金方法を指定する必要があります:現金、銀行口座振込(〜=クレジットカード)、ポイントカード、バウチャーなど。 これらの送金手段は、有限で既知の値のセット(列挙型の一種)です。 トリッキーな部分は、支払いと払い戻しの両方(2つのセットは異なる場合があります)のためにこれらの手段のカスタムサブセットをPOS端末に保存できる必要があることです。 例えば: 利用可能な支払い手段:現金、EFT、ポイントカード、バウチャー 利用可能な払い戻し手段:現金、バウチャー 実施の現状 私は次のように送金手段の概念を実装することを選択します: public abstract class MoneyTransferMean : AggregateRoot { public static readonly MoneyTransferMean Cash = new CashMoneyTransferMean(); public static readonly MoneyTransferMean EFT = new EFTMoneyTransferMean(); // and so on... //abstract method public class CashMoneyTransferMean : MoneyTransferMean { //impl of abstract method …