前言
在前面两篇文章中,我们已经介绍了设计一款五子棋游戏的所使用的一些思想以及部分的代码,以便我们更好地对设计模式
进行理解。这次我们全面把代码铺开来讲,注意,我们这次的设计是完全使用Flutter
自带的包进行设计。
正文
1.前情回顾
在上一篇文章中,我们对棋子的代码进行了设计。现在我们再进行回顾一下。先放个整个项目所使用到的类图的概览图。
棋子创建——享元模式
对于棋子的创建,我们使用享元模式,因为享元模式的设计思路就是将大量相同的对象进行复用。
在本项目中,棋子创建的类图如下:
在编码上,我们定义了抽象类Chess,他本质上是一个抽象享元。
///棋子的抽象类
///使用了桥接模式,外观和颜色是两个不同的维度
abstract class Chess{
Color? _color;
Color get color => _color!;
ChessShape? _chessShape;
ChessShape get chessShape => _chessShape!;
set che