您的位置:首页 > 大数据 > 人工智能

[重构到模式-Chain of Responsibility Pattern]把Fizz Buzz招式重构到责任链模式

2013-07-03 21:27 519 查看
Fizz Buzz是国外一群小学生集体练习除法的游戏。老师在下课前5分钟,要小朋友们按顺序轮流递增地从1数到100,每人说一个数,当遇到3的倍数(multiples of three)时要说Fizz,遇到5的倍数(multiples of five)时要说Buzz,遇到即是3的倍数同时也是5的倍数时(multiples of both three and five)要说FizzBuzz。例如:1、2、Fizz、4、Buzz、Fizz、7、8、Fizz、Buzz、11、Fizz、13、14、FizzBuzz、16、17、Fizz、19、Buzz、...
等等,直到 100。如果当轮到你说时,你说错了或者犹豫半天,你就输了,不能再继续游戏。

试用您熟悉的编程语言实现上述需求。

待上述需求完成后,增加下述新需求:

1)当遇到7的倍数(multiples of seven)时说Whizz。试着重构代码,使得当实现该新需求时,仅仅添加新的类来实现新的逻辑,而不必修改实现已有的逻辑的类的代码。

2)当遇到包含数字3的整数(如23、53等等)时也说Fizz,而当遇到35这样既包含数字3又是5同时又是7的倍数时,说FizzBuzzWhizz。试着重构代码,使得当实现该新需求时,仅仅修改涉及说出Fizz、FizzBuzz和FizzBuzzWhizz的类的代码,而不必修改其他的类的代码。

提示:可以考虑使用Chain of Responsibility设计模式。

参考测试1:遇1说1。

参考测试2:遇3说Fizz。

参考测试3:遇5说Buzz。

参考测试4:遇15说FizzBuzz

参考测试5:遇7说Whizz

参考测试6:遇23说Fizz

参考测试7:遇35说FizzBuzzWhizz

来源: "Coding Dojo Handbook" by Emily Bache https://leanpub.com/codingdojohandbook

源码: https://github.com/wubin28/KataFizzBuzz

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐