【问题标题】:Circular compositional pattern with RSS Feed and FeedItem classes带有 RSS Feed 和 FeedItem 类的循环组合模式
【发布时间】:2009-11-05 13:16:39
【问题描述】:

我正在设计一个小系统来解析 RSS 提要,我有两个类:Feed 和 FeedItem。

public class Feed
{
    public string Title{ get; set; }
    public string Link{ get; set; }
    public string Description { get; set; }
    public bool IsTwitterFeed { get; set; }
    public List<FeedItem> Items { get; set; }
}

public class FeedItem
{
    public string Title { get; set; }
    public string Link{ get; set; }
    public string Description { get; set; }
    public DateTime Date { get; set; }
}

Feed 有 FeedItem,FeedItem 有父 Feed。给 FeedItem 类一个父 Feed 成员会不会是一种糟糕的模式:

public Feed ParentFeed { get; set; }

所以我可以这样做:

// get the latest item from the latest feed, then print its parent feed name
FeedItem item = Feeds.GetLatest().Item[0];
Response.Write(item.ParentFeed.Name + ": " + item.Title);

或者我应该只通过其父 Feed 获取 FeedItem,以避免这两个类之间的循环引用?

【问题讨论】:

    标签: c# design-patterns rss composition


    【解决方案1】:

    如果您确实需要父级,则可以将其存储为 object。如果您可以通过除Feed 以外的其他途径获得FeedItem 并且需要到达Feed,则这是必要的。但是,它并不是特别优雅。

    这通常在可能存在不同类型的父对象的情况下完成。

    【讨论】:

      【解决方案2】:

      为什么您的调用者不只存储对 Feed 的引用?

      Feed latest = Feeds.GetLatest();
      FeedItem item = latest.Item[0];
      Response.Write(latest.Name + ": " + item.Title);
      

      编辑:如果可能的话,我个人会避免循环引用,但我想这只是一个口味问题!?

      【讨论】:

        猜你喜欢
        • 2017-09-19
        • 2011-03-03
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 2011-05-15
        • 1970-01-01
        • 2017-05-25
        相关资源
        最近更新 更多