我需要什么
我想要构建一个应用程序,其中包含一个名为“商店”的模型。每个商店都有营业时间。这些营业时间可能非常复杂。最好通过示例来展示复杂性:
- 商店周一至周五从10点到18点营业。
- 商店周一至周三从10点到18点营业,周四从14点到18点营业,周五从10点到14点营业。
- 商店每周七天从10点到18点营业,但仅在给定的时间段内,例如从2014年4月18日到2014年5月30日。
- 商店每月第二个星期六从10点到16点营业。
- 商店全年每周一至周六营业,时间从早上8点到晚上8点,但在一些特殊日子如12月24日至26日和复活节星期一不营业。
正如您所看到的,有许多复杂的组合。
生成的数据结构应支持以下三件事:
- 返回商店在未来半年(或同等数量级)中营业的所有时间段的列表
- 返回面向最终用户显示的可读性开放时间表示形式。
- 商店的营业时间将由最终用户输入,最终用户应该能够使用表单轻松地指定上述任何可能性(无需培训,它在网站上)。
我的方法
我试图将其建模为一个对象结构。我目前的想法是:
- 每个营业时间都是实现通用接口的对象。
对于每种情况,都有一个实现它的类,例如:
- 一个类是“每周营业时间”,它模拟了#1(每周每天的开放和关闭时间)
- 一个类是特定单个日期(12月24日)
- 一个类是每个月循环时间的类(每个月第二个星期六)
- 一个类是更大的时间跨度(2014年4月18日至2014年5月30日)
- 如果需要,还可以有更多。
每个商店都有一个营业时间列表。
- 这些营业时间中的每一个都有一个例外列表,其中每个例外都是一个营业时间本身,该营业时间本身可能有例外。
我看到的问题
我最担心的是可用性:我如何打印像这样建模的营业时间,用户如何输入它们?
我接受其他方法。还没有实现任何内容,而且想到上述方法时,我的胃口也疼...