是否可以使用具有特定长度的子项列表的模型对象?

时间:2014-02-12 04:01:11

标签: c# domain-driven-design

我希望我的模型有一个具有特定长度的子项列表,是否可以在模型中设置长度,“DDD样式”?

一个例子是一副有52张牌的纸牌。

public class Deck
{
    List<Card> Cards { get; set; } 
}

提前致谢

2 个答案:

答案 0 :(得分:3)

我认为您需要在Deck类中实现此自定义限制,而不是将List<Card>公开为公共成员:

public class Deck
{
    private List<Card> cards;

    public Deck()
    {
        cards = new List<Card>();
    }

    public void Add(Card card)
    {
        if (cards.Count == 52)
        { 
            throw new TooManyCardsException();
        }
        cards.Add(card);
    }

    public void Remove();
    {
        ...
    }

    ....
}

答案 1 :(得分:2)

如果您知道牌组总是有52张牌,那么为什么不制作一个固定大小的阵列?最终,如果合作者打开甲板进行修改,那么您可能希望执行其他答案中提到的内容,并在您的班级中提供一些保护Deck对象的保护措施。如果Deck模型的卡片阵列/列表对外是只读的,那么我就支持阵列的想法。