对于设计模式课程,讲师要求我的团队开发一个支持绘制和持久字形的应用程序,非常类似于 GoF 的 WYSIWYG 编辑器。
我的团队决定使用分层架构,具有递减层:表示、控制器、逻辑、持久性。
Logic 维护一组字形表示、它们各自的位置和一些形状独特的属性。讲师建议我们使用 Builder 模式来创建统一的持久性机制,因为 CSV 和 XML 是必需的持久性格式。
当我们尝试在 Persistence 层中设计 Builder 时,问题就出现了。因为我们使用的是 Layers,所以 Persistence 层不允许明确了解 Glyph 类型,更不用说将它们从抽象形式转换为各自的形状。对于将每个 Builder 作为其构造函数传递的内容,这让我摸不着头脑。
下一个问题是很难概括 Builder 采用的类型。矩形具有线条没有的属性。
我很难掌握如何做到这一点。我了解 Builder 模式,但有些东西没有点击。我是在滥用模式,还是我没有正确地解决问题?
编辑:讲师没有说我们必须重新加载持久格式。我的最终解决方案显然应该让这很容易,但对于我目前的问题,我只专注于保存。