首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以面向对象的方式模拟商店的开放时间?

如何以面向对象的方式模拟商店的开放时间?
EN

Stack Overflow用户
提问于 2014-06-18 20:31:46
回答 1查看 515关注 0票数 3

我所需要的

我想要建立一个应用程序,其中有一个模型“商店”。每家商店都有营业时间。这些开放时间可能相当复杂。我认为最能证明复杂性的例子是:

  1. 一家商店从星期一到星期五10点到18点营业。
  2. 星期一到星期三10点到18点,星期四14点到18点,星期五10点到14点。
  3. 一家商店的营业时间是周一到周日,从10点到18点,但只在一定的时间内营业,比如从2014年4月18日到2014年5月30日。
  4. 商店在每个月的第二个星期六开放,从10点到16点。
  5. 商店全年营业时间从星期一到星期六,从8点到20点不等,但不是在几个特殊的日子,如12月24日至26日和复活节星期一。

正如你所看到的,有许多复杂的组合。

由此产生的数据结构应该支持三件事:

  1. 返回一张所有时间跨度的列表,其中一家商店将在未来半年营业(或类似于该规模的产品)。
  2. 返回打开时间的人类可读的表示形式,显示给最终用户。
  3. 商店的开放时间将由最终用户输入,这些用户应该能够很容易地用表单指定上述任何一种可能性(无需培训,其在网站上)。

我的方法

我试着把它建模成一个对象结构。我现在的想法是:

  • 每个打开时间都是一个实现公共接口的对象。
  • 对于每一种情况,都有一个实现它的类,例如:

代码语言:javascript
复制
- One class is a "weekly opening time", which models opening times like #1 (opening and closing time for each day of the week)
- One class for specific single dates (24th of December)
- One class for recurring times each month (each second Saturday of a month)
- One class for bigger time spans (18th April 2014 to 30th of May 2014)
- More, if the need occurs.

  • 每家商店都有营业时间的清单。
  • 每个打开时间都有一个异常列表,其中每个异常本身都是一个打开时间,而打开时间本身也可能有异常。

我看到的问题

我最关心的是可用性:如何打印像这样建模的开放时间,以及用户如何输入这些时间?

我对其他方法是开放的。什么都没有实现,当我想到上面的方法时,我胃疼……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 13:01:31

(就数据建模标记而言)一个单一实体:

OpeningPeriod(CalendarDay、OpeningHour、ClosingHour)

OpeningPeriod(OpeningTimeStamp,ClosingTimeStamp)。

任何商店/组织的完整开放/关闭时间表是一组这样的开业期。

不要试图捕捉某种“通用的、无所不包的预测方式”来描述任何可能的开场/闭幕式,所有的例外和例外都包括在内。你会失败,因为“例外”的性质是没有尽头的。而且,当您开始尝试在重叠的规则之间“排序”时,您将很快地遇到严重的问题。

只要尝试在UI中构建尽可能多的基于“标准”的基于规则的工具,再加上一个在OpeningPeriod中最底层管理调度的工具,以处理任何可能的“由所提供的规则未处理的异常”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24294524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档