簡體   English   中英

如何設置類以與范圍集中的至少一個對象建立一對多關系

[英]How to set up classes to model one-to-many relationship with at least one object in the range set

假設您要使用OOP對以下情況進行建模。 您想要一個User類,一個Album類和一個Photo類,這樣

A User has 0 or more Albums
An Album has 1 or more Photos

因為我需要一個相冊至少要有一張照片,所以我認為應該將List<Photo> photos參數放在我的相冊類的構造函數中。 但是,這將假定在創建父相冊類之前創建了一個Photo對象列表。 因此,我不能像我計划的那樣在Photo類的構造函數中包含Album parentAlbum參數。

對於我來說,設計每張照片可以引用其父相冊的最佳方法是什么,但是如果沒有任何照片就無法創建相冊?

嚴格來說,我實際上認為您不應該從Photo實例中引用父Album ,因為:a)一張照片不需要相冊,並且b)您將來限制了Photo的可重用性。 如果您可以提出一種刪除該引用的方法,那么我會做的。 您可以通過搜索您擁有的每個Album來查找父Album ,或者更好的方法是創建相冊的照片字典。

話雖這么說,我本人當然也做了類似的事情,因為它使編碼變得非常容易:)並沒有在Photo的構造函數中設置父Album ,但這可能是下一個最好的事情:

class Album {

    public Album (List<Photo> photos)
    {
        if (photos.Count < 1)
        {
            throw new Exception("Album must have at least one photo.");
        }

        foreach (Photo thisPhoto in photos)
        {
            thisPhoto.setAlbum(this);
        }
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM