这是我自己对城堡游戏的解读,解读后自己才不会囫囵吞枣地假装自己懂了。
城堡游戏是一个根据目前所处的房间与方向,来指明下一步所处位置与出口的小游戏。 翁恺老师讲课的精妙之处在于,从最简单也最缺乏设计感的代码写起,通过减少代码复制、降低耦合度、封装和可拓展性等编程思想,一步步改造出优雅、简洁且功能齐全的代码。
主要有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&#