【发布时间】:2014-08-09 06:41:20
【问题描述】:
我需要什么
我想构建一个包含模型“商店”的应用程序。每个商店都有营业时间。这些开放时间可能非常复杂。我认为复杂性最好通过示例来说明:
- 一家商店在周一至周五的 10 点至 18 点营业。
- 一家商店的营业时间为周一至周三的 10 点至 18 点、周四的 14 点至 18 点以及周五的 10 点至 14 点。
- 一家商店在周一至周日的 10 点至 18 点营业,但仅限于给定的时间跨度,例如 2014 年 4 月 18 日至 2014 年 5 月 30 日
- 每个月的第二个星期六上午 10 点到 16 点都有一家商店营业。
- 一家商店在周一至周六的 8 点到 20 点之间全年营业,但不是在几个特殊的日子,例如12 月 24 日至 26 日以及复活节星期一。
如您所见,有许多复杂的组合。
生成的数据结构应该支持三件事:
- 返回商店在下半年(或该数量级)营业的所有时间跨度的列表
- 返回显示给最终用户的开放时间的人类可读表示。
- 最终用户将输入商店的营业时间,最终用户应该能够通过表格轻松指定上述任何可能性(无需培训,在网站上)。
我的方法
我试图将它建模成一个对象结构。我目前的想法是这样的:
- 每个打开时间都是一个实现公共接口的对象。
-
对于每种情况,都有一个实现它的类,例如:
- 一个类是“每周开放时间”,它模拟开放时间,如 #1(一周中每一天的开放和关闭时间)
- 特定单日课程(12 月 24 日)
- 每月重复一次的课程(每月的第二个星期六)
- 一堂课,时间跨度更大(2014 年 4 月 18 日至 2014 年 5 月 30 日)
- 更多,如果需要的话。
每个店铺都有营业时间列表。
- 每个开放时间都有一个例外列表,其中每个例外都是开放时间本身,而开放时间本身又可能有例外。
我看到的问题
我最关心的是可用性:如何打印像这样建模的开放时间,以及用户如何输入它们?
我对其他方法持开放态度。目前还没有实现任何东西,一想到上面的方法,我就感到胃痛......
【问题讨论】:
-
是的,祝你好运,也等待一些关于这个问题的想法。但不要担心有人会以某种方式提出一个好主意,他们总是这样做;)
-
使用 iCalendar RRules,以及在您选择的 OO 语言中支持它的库。
-
@NeilMcGuigan 你碰巧知道一些 PHP 库吗?我只能找到iCalcreator,但对我来说似乎不是很高级。
标签: oop data-modeling modeling