[重构到模式-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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值