观察者模式 (模仿贪吃蛇)案例分析

之前学习了23种模式,就找了个相关的案例,模仿贪吃蛇的。

一. 应用场景与案例描述

案例描述:去年暑假开始贪吃蛇大作战开始火起来了,这款游戏简单有趣,尤其是团战最吸引玩家。于是我想试着用java做个简单的贪吃蛇,用键盘来控制方向,通过观察者模式使得玩家按下按键时蛇会做出相应的响应。

应用场景:键盘监听器就用到了观察者模式,观察者是蛇,被观察者就是键盘按键,玩家在键盘上按下“上下左右”的方向键,当被观察者发生变化的时候,观察者能够及时得到消息并作出相应的响应,此时蛇就会及时响应这个按键事件,从而往对应的方向走。观察者模式可以通过多种方式来实现,其中java内置自带的键盘监听器,鼠标监听器等都是它的实现实例。

二. 案例分析与解决问题

案例分析:贪吃蛇这个游戏中,最重要的就是蛇的行走方向,玩家按下按键后,如果蛇无法及时知道玩家按下按键的这个重要消息,就无法及时对这个键盘按键事件作出相应的响应,这个游戏也就失去了乐趣和存在的意义,因此蛇及时知道并响应玩家按键事件是尤为重要的,而被观察者不止一个,所以更需要抽象的方法来解决这个问题。

解决问题:观察者模式定义了对象间的依赖,当对象改变时,它的依赖者都会收到通知并作出响应。也就是被观察者改变时,观察者可以及时得到这件事情的通知并作出响应。比如我们生活中用户从报社订阅报纸,报社可以把最新的报纸发给用户,用户自动收到更新,用户不用的时候还可以取消注册,再比如,回调函数:android中对button的点击监听等都是基于观察者模式的思想。因此我们贪吃蛇游戏中对键盘按键的监听也能通过观察者模式来实现,从而解决问题。

原文地址:https://www.cnblogs.com/1997Ff/p/7364868.html