作者 | 文泰来老师
编辑 | Jenny
专栏 | 九章算法
如何设计一个ATM Machine?
这是一道常考的OOD面向对象面试题,属于 Real-life Object Deisgn, 类似面试题型有Vending Machine 等。
Assumption: Input 是卡, output 是现金
Input 有什么限制吗?
Assumption: 只能是debit card
output 有什么限制吗?
Assumption: 只能是20美元的倍数
Output 会不足吗?
Assumption: ATM永远有足够的余额 (Bonus: 这里可以考虑如果不够的话应该怎么处理)
Input 有什么特点?
Assumption: 一张卡可能有多个账户 (Bonus: 这个不太容易想到, 没想到也没关系,我们可以先按照一个account来做)
Debit Card
ATM Machine
Account
ATM Machine
Session
Account
1. 增加各式的Exceptions
2. 对于ATM机,有许多种Design pattern可以适用,其中比较合适的就有我们《OOD面向对象专题》课上讲过的State Design Pattern, 大家可以自己思考有哪些合适的states。
ATM Machine作为一道real life object的题目,做法和我们上课讲过的解法大同小异,其中值得注意的三点分别是对Session的使用;可能出现各式各样的Exception; 以及一张卡对应多个 Account的business logic。
九章算法《OOD 面向对象专题班》,由本文作者文泰来老师主讲
免费试听内容:
免费试听时间:
美西时间7月15日周日 13:30-15:30
美东时间7月15日周日 16:30-18:30
北京时间7月16日周一 04:30-06:30 a.m
长按二维码报名:
回复“简历”,查看简历撰写指南,获取“简历模板”
回复“冷冻期”,查看北美各大IT企业冷冻期信息和注意事项
回复“Career”, 查看Caireer Fair 攻略 check list
回复“薪资”,查看北美各大IT企业New Grades Engineer 薪资水平;
回复“项目”,查看7-14天可以搞定的小项目推荐
回复“评分”,查看系统设计评分指南
回复“behavior”,查看behavior interview指南
回复“晋升”,查看Engineer晋升机制