必须使用mvc、工厂和观察者模式的应用程序的体系结构(包、类)应该是什么样的呢?
问题在于解决迷宫,它可以为迷宫(模型)接口提供两种类型的实现:一种是使用二维数组(矩阵),另一种是使用稀疏矩阵(仅存储占用的单元格的列表)。
视图部分应该负责描述迷宫的文本表示。它应该包含方法: get/setLabyrinth,toString。我还应该有一个LabyrinthSolver接口,我将从它创建两个实现:交互式实现(使用键盘)和自动实现(lee的算法)。
界面LabyrinthObserver描述了迷宫勘探的观察者。在探索过程中,一名观察者将在屏幕上打印信息。一个观察者将发现的解决方案存储在一个按解的长度排序的数据结构中。
最后,迷宫(matrixImpl或sparseImpl)应该使用工厂创建。
在设计视图时,我遇到了问题:因为我可以用两种方式存储迷宫(二维矩阵或被占用的单元格列表),现在我应该如何创建迷宫的文本表示,知道如何存储我的迷宫?我正在考虑用这个方法创建一个接口。
createTextRepresentation( ? labyrinth)但是我的迷宫参数应该是什么类型呢?我对其他所有的课程都有这个问题:解决者,观察者?如何将这三种模式结合使用?
P.S.:我不是要求这些类的实际实现,只是对如何将它们组合在一起的一般想法。
发布于 2016-03-08 14:15:32
由于View类有迷宫设置器,所以createTextRepresentation方法不需要迷宫作为参数。
您的问题不是View的设计,而是模型的设计。Labyrinth接口需要有足够的表现力,以便可以在不知道实现细节的情况下使用该接口创建文本表示。
所以代码形状应该看起来像
public class LabyrinthFactory {
public Labyrinth createLabyrinth() { ... }
}
public class LabyrinthView {
private Labyrinth model; // Avoid getters and setters. Honor encapsulation.
public LabyrinthView(Labyrinth model) {
this.model = model;
}
public String createTextRepresentation() { ... }
}https://stackoverflow.com/questions/35868958
复制相似问题