1、需要对某个“对象”进行修改时,不要把它整个“人”都丢进去,如果整个人都丢进去了,就丧失了对这个“对象”的控制权。 解决: ①可以将对象的某些属性丢进去,然后返回出来。 ②若实在需要将整个对象丢进去,则应该一开始就丢进去,后面就再也没有对这个对象的操作,所有操作都交给丢过去的那个方法/类。 2、符合规格:例如亮灯与否,是取决于往哪个方向移动,并不是按下哪个键(虽然最后结果一样)。但是如果以后改规格了,各个方向的移动速度不同,就会出问题。 3、考虑扩充性:eg:多个方块;不同移动速度;亮灯颜色 4、抽出逻辑:eg:移动多少;是否亮灯;亮灯操作 5、抽出逻辑的目的主要是: ①不把控制的“对象”直接丢进去,也就是不交出控制权; ②将逻辑抽出成方法后,该方法的重复利用性就变强了。这样的话出了逻辑问题(比如灯的颜色变化):找方法;出了对象控制问题(灯的是否打开):找控制灯的“对象”。 6、不要轻易将属性/方法做成静态。但是就此题来说,“MoveObject”类的边界条件属性,作为静态的话是合适的。因为不管New了多少个对象,边界都是同一个,当边界改变时,也是改变所有对象的边界属性。