在本次教程中,我们将完成Food这个类的设计。这是游戏相当关键的一部分,直接决定了游戏的可扩展性、可玩性。。。
进入正题:
先给大家看下Food类的类图:
从图中我们可以看到有多种食物,并且它们具有很多相同的属性和方法。所以我们很容易想到使用继承Food类。
新的类图就变成这个样子了:
这样当我们为游戏添加新的事物类型时只需要继承Food类并重写draw方法就可以了。(不同的食物,所表现的外观不同,所以需要具体的食物类,自己实现这个方法)
但是还有一点值得注意:每一个食物都有多种运动方式。如:水平运动,垂直运动,静止。。。如果将这些方式写在具体的事物类里面,首先这个move方法会变得很复杂,里面会有各种分支,判断。。。
那么如果后期我们对游戏进行升级,比如增加一种新的运动方式,或者删除一种新的运动方式将变得非常繁琐,而且也不利于代码的复用。
这个时候我们需要采用这样一种设计模式:策略模式。
我们把move这个方法抽象为一个类MoveBehaviour。
那么新的类图就是这个样子了:
当我们需要添加新的运动方式时,只需要写一个类继承MoveBehavior,并实现具体的move方法就可以了。
这样就完成了食物类的设计了。我们这样设计之后,就可以非常灵活的创建新的食物,并为其添加新的运动方式了。。。了不起!!!
给大家看下项目的结构图:
通过将源码放在对应的package里面更利于游戏的管理。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。