面向对象之 OODesign
常用表达:
- 假设 key 是 int,简化问题
- 假设适合存储
- 假设输入是合法的,不需要 check 输入合法性
应用
参考: 常见问题
| Question | |
|---|---|
| Design a hash map | Solution |
| Design a least recently used cache | Solution |
| Design a call center | Solution |
| Design a deck of cards | Solution |
| Design a parking lot | Solution |
| Design a chat server | Solution |
| Design a circular array | Contribute |
| Add an object-oriented design question | Contribute |
##
呼叫中心:
- 定义操作员,上级,上上级。 这 3 个都是人,继承于一个对象,每次 Init 时先 super init
- 定义呼叫中心,进行流转
- 定义电话实体,有状态机
一部牌
- 定义红桃还是黑桃这样 suit
- 定义卡片,组合 suit, 有属性分数
- 定义手,内部有卡片集合,支持添加卡片,支持输出当前分数
- 定义桌子,用来发牌、洗牌
停车场
- 定义车,车有多种类型
- 定义子类,继承车
- 定义停车位
- 停车场有多层,定义层,层组合了停车位 list
- 定义停车场,停车场组合了层 list
聊天室
- 定义 User
- 定义 UserService
- 定义聊天基类,chat_id, message list, user list
- 定义私人聊天
- 定义群聊天
- 定义消息 message
也可以看:Grokking the Object Oriented Design Interview