俄罗斯方块的游戏中关于自定义图形监听器ShapeListener
我的理解是:
1、关于继承接口:接口里的方法本来就是抽象方法,你ShapeListener就算继承Listener也不覆盖它的抽象方法,因为ShapeListener里的方法必须也是抽象的,所以ShapeListener不需要继承什么接口。
2、整个游戏摘要流程:
前提Shape中添加了addShapeListener接口的方法,Controller类实现了ShapeListener接口,并覆盖它的方法isShapeMoveDownable,所以Controller是ShapeListener的子类
(1)主函数Game中语句controller.newGame();
(2)而Controller中的public void newGame(){shape = shapeFactory.getShape(this);
}该方法调用getShape方法,传入的参数是this,即是Controller
(3)ShapeFactory中getShape(ShapeListener listener)方法new了新图形,并对图形添加shape.addShapeListener(listener)
自此可看出,shape.addShapeListener(listener)添加的监听器其实是Controller
如图: