[重构到模式-Observer Pattern]酒店世界时钟招式


一般高档酒店大堂里,都在一面墙上挂一些时钟,每个时钟显示着世界上一个主要城市的当前时间。试用TDD或BDD的开发方法,和你熟悉的编程语言,编写程序,实现如下需求:

1)目前先显示5个城市的当前时间,需要考虑当地时间是否实行夏时制:北京、伦敦(夏时制加1小时)、莫斯科、悉尼、纽约(夏时制加1小时)。以后会增加更多的城市时间。伦敦夏时制起止时间为每年的3月31日至10月27日,纽约的夏时制起止时间为每年的3月10日至11月3日。

2)若时钟走时不准,需要调整时间时,只需调整相应的一个城市的时间,其余4个城市的时间能够自动根据该城市的时间调整准确。

3)若实行夏时制的城市要结束或开始夏时制,当调整该城市的时间时,其余4个城市的时间不应有变化。

4)参考测试用例如下:

a)2013年9月2日,北京时间(UTC+8)周一早8:00,伦敦时间(UTC+0,夏时制加1小时)周一早1:00,莫斯科时间(UTC+4)周一早4:00 ,悉尼时间(UTC+10)周一早10:00,纽约时间(UTC-5,夏时制加1小时)周日晚20:00。若此时北京时间不准确,慢了1小时,故将北京时间调整为周一早9:00,相应地其余4个城市的时间都自动增加1小时。

b)若到了2013年10月28日,北京周一早8:00,伦敦时间周一早1:00,莫斯科周一早4:00,悉尼周一早10:00,纽约周日晚20:00,此时伦敦夏时制结束,而纽约夏时制尚未结束,把伦敦时间调整为周一早0:00,其余城市的时间不应有变化。.

5)可以试着把该招式重构到Observer观察者模式。

6)英文提示

协调世界时:Coordinated Universal Time (UTC)

夏时制:Daylight Saving Time (DST)

原创文章,转载请注明出处, 谢谢。本文地址:http://blog.csdn.net/wubinben28/article/details/10893837


[重构到模式-Observer Pattern]酒店世界时钟招式_第1张图片

你可能感兴趣的:(重构到模式)