对象关联:哪个对象应该引用另一个?

时间:2012-10-10 11:35:14

标签: c# asp.net oop agile

这是我们制作的网站常见的任务,但我不确定设计课程的最佳方式。作为敏捷开发的新手,我想确保我避免养成坏习惯。

我正在开发一个网站,其中包含多个国家/地区的网页。 CMS允许用户更改每个国家/地区页面的内容(标题,副本等)。我们被问到CMS是否可以管理时间表(可下载的PDF)。

假设我有一个Country类和一个Timetable类什么是最好的(从敏捷的角度来看)?

  1. 在国家/地区类中创建一个属性:
  2. public List<Timetable> Timetables

    1. 在时间表类中创建一个属性:
    2. public Country AssignedCountry

      当然,最好的方法取决于信息的使用方式。如上所述,每个国家/地区都有一个页面显示该国家/地区的时间表。但是,还有一个时间表页面列出了所有时间表,理想情况下,它显示了他们所在的国家。

      使用选项1意味着国家/地区页面可以轻松列出其时间表,但时间表页面上的每个时间表都没有参考其分配的国家/地区。

      选项2意味着时间表页面更容易,因为我可以列出所有时间表并显示相关国家/地区。但是,国家页面更加尴尬,因为每个国家都不知道它的时间表,因此需要一些其他方法来获得相关的时间表。

      选项3? 由于时间表实际上不是一个国家的财产,同样,国家不是PDF文件的属性,我想我可能最好创建一个静态实用程序类(工厂?),其中包含我可以调用的方法来获取我需要的信息 - 时间表按国家或国家的时间表。数据库中的国家/时间表关系是多对多的,因此这似乎是更合理的解决方案。

      我们的客户通常希望为CMS添加更多功能,通常情况下决定事情的相关性并不是问题,但这种事情让我感到困扰。

      我是不是太复杂了?我缺少一个简单的经验法则或技术吗?

2 个答案:

答案 0 :(得分:0)

我同意选项1和选项2不适合您。 可能最好的选择是使用数据库并使用第三类阅读您需要的内容。

当然,您也可以同时使用选项1和2。

在国家/地区,您知道要显示的时间表,在时间表中您知道哪个国家/地区可以显示它。

此外,您可以强制使用这两个选项中的一个,但这样做至少需要一个列表中的国家/地区列表,当您有一个时间表时,您循环所有国家/地区询问“isValidTimetable”然后您拥有所有可以显示时间表的国家。

但这一切都取决于你有多少物品,你没有告诉我们。

答案 1 :(得分:0)

归结为几个简单的问题......

  • 每个时间表只适用于一个国家吗?
  • 每个时间表是否必须与某个国家/地区相关联,还是可以自由浮动?

如果每个时间表必须与一个国家/地区相关联,我很想将国家/地区ID放在时间表对象中,并从带有连接的sql中进行选择以进行显示。如果答案不同,您应该考虑这些对象的完整用例,并且应该为您定义答案。