[重构到模式-Chain of Responsibility Pattern]把Fizz Buzz招式重构到责任链模式
来源:互联网 发布:ipadmini下载软件 编辑:程序博客网 时间:2024/06/16 17:21
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
- [重构到模式-Chain of Responsibility Pattern]把Fizz Buzz招式重构到责任链模式
- [重构到模式-Chain of Responsibility Pattern]把哈利波特购书优惠招式重构到责任链模式
- 责任链模式(Chain of Responsibility Pattern)
- 责任链模式(Chain of Responsibility Pattern)
- 责任链模式【CHAIN OF RESPONSIBILITY PATTERN 】
- 责任链模式【Chain of Responsibility Pattern】
- 责任链模式(Chain of Responsibility Pattern)
- 责任链模式(Chain of Responsibility Pattern)
- 责任链模式【Chain of Responsibility Pattern】
- 责任链模式 Chain of Responsibility Pattern
- 责任链模式【Chain of Responsibility Pattern】
- 责任链模式【Chain of Responsibility Pattern】
- 责任链模式--Chain of Responsibility Pattern
- 责任链模式 | Chain of Responsibility Pattern
- 设计模式 - Chain of Responsibility Pattern(责任链模式)
- 设计模式 - Chain of Responsibility Pattern(责任链模式)
- java与模式 责任链模式 Chain of Responsibility pattern
- 行为型模式:责任链模式(Chain of Responsibility Pattern)
- 代码覆盖率总结
- SQL SELECT INTO 语句
- modelism仿真do文件编写(查看.v内部信号)
- VC++常规错误之一:error LNK2019: 无法解析的外部符号 "public: void __thiscall
- 权限开发 spring security 3.0.7 序列2
- [重构到模式-Chain of Responsibility Pattern]把Fizz Buzz招式重构到责任链模式
- Linux-kernel 网桥代码分析(一)
- SQL创建视图(CREATE VIEW)
- List<T> 排序的几种方式
- 前端开发者不可忽视的 5 个 HTML5 新特性
- cocos2d-x 学习笔记(3)cocos2d-x 创建基本控件 及小动画
- JavaScript中点号“.”的多义性
- Linux-kernel网桥代码分析(二)
- Java单实例模式的正确写法