开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情
前言
通过使用几个设计模型
的思想,我们设计一款五子棋游戏。更好地对设计模式
进行理解。注意,本次的设计并不包含任何的游戏引擎,完全使用Flutter
自带的包进行设计。最终效果如下:
正文
1.构思
在目前主流的五子棋游戏中,常有的行为有:棋子、棋盘、玩家的状态(是否可以悔棋)、以及悔棋的记录。
因此,我们这次的五子棋设计打算采用6种设计模式,分别是享元模式
、单例模式
、桥接模式
、工厂方法
、状态模式
、备忘录模式
。
其中享元模式用于棋子的创建与复用;
单例模式用于享元工厂的创建以及部分负责类的设计;
桥接模式用于棋子形状的创建,与棋子颜色的创建独立开来;
工厂方法模式用于五子棋主题颜色的创建;
状态模式用于玩家状态的切换(如是否可以悔棋等);
备忘录模式用于玩家的悔棋。
2.具体设计
棋子创建
对于棋子的创建,我们使用享元模式,因为享元模式的设计思路就是将大量相同的对象进行复用。
在本项目中,棋子创建的类图如下:
而对于享元工厂,我们则可以使用单例模式
进行创建。
类图如下:
棋子形状
因为形状主要是用来装饰棋子的,比如玩家根据自身等级可以购买不同的棋子皮肤、形状,因此我们这里抽出来单独设计。类图如下:
...
由于时间关系,我们目前先构思这么多,还有更多的设计,我们后面再继续讨论。