翁恺老师 | 城堡游戏解读

这是我自己对城堡游戏的解读,解读后自己才不会囫囵吞枣地假装自己懂了。

城堡游戏是一个根据目前所处的房间与方向,来指明下一步所处位置与出口的小游戏。 翁恺老师讲课的精妙之处在于,从最简单也最缺乏设计感的代码写起,通过减少代码复制、降低耦合度、封装和可拓展性等编程思想,一步步改造出优雅、简洁且功能齐全的代码。


主要有Room、Handler、Game三个类。

(1)Room的作用是制造城堡最简单的单位,即房间,并建立房间与出口的对应关系。

(2)Handler的作用是把go bye help等动作从Game中分离出来,并成为HandlerGo HandlerBye HandlerHelp的父类,以提高程序的可拓展性。

(3)Game的内容是程序的主体,通过自己创造的createRoom printWelcome goRoom play函数,并调用Room与Handler,来完成程序的主体功能。

Room类

1.String description 属性,用于构造器,在new一个Room时给房间起名字。

2.Hash Map<String, Room>属性(创造的对象叫exits),用于setExit方法,对出口与房间进行匹配,被Game中的createRoom调用。

3.toString方法的重写,是为getExitDes方法服务。

4.getExitDes方法通过遍历exits的键,将其拼接到StringBuffer上,并通过调用toString方法,返回一串出口字符串。

5.getExit方法通过输入exits的键,来得到exits的值,看起来没有存在的必要,却能够保护封装性。

Handler类

1.Handler声明了Game对象game,给HandlerGo使用。而doCmd方法则为每一个子类服务,isBye方法配合HandlerBye使用。

2.HandlerGo重写了doCmd方法,通过继承而来的game调用goRoom方法,而对传进来的每一个direction作出反应。

3.HandlerBye重写了isBye方法,如果实参不是HandlerBye则返回Handler的true&#

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值