首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java、Factory和观察者模式

Java、Factory和观察者模式
EN

Stack Overflow用户
提问于 2016-03-08 13:38:42
回答 1查看 568关注 0票数 1

必须使用mvc、工厂和观察者模式的应用程序的体系结构(包、类)应该是什么样的呢?

问题在于解决迷宫,它可以为迷宫(模型)接口提供两种类型的实现:一种是使用二维数组(矩阵),另一种是使用稀疏矩阵(仅存储占用的单元格的列表)。

视图部分应该负责描述迷宫的文本表示。它应该包含方法: get/setLabyrinth,toString。我还应该有一个LabyrinthSolver接口,我将从它创建两个实现:交互式实现(使用键盘)和自动实现(lee的算法)。

界面LabyrinthObserver描述了迷宫勘探的观察者。在探索过程中,一名观察者将在屏幕上打印信息。一个观察者将发现的解决方案存储在一个按解的长度排序的数据结构中。

最后,迷宫(matrixImpl或sparseImpl)应该使用工厂创建。

在设计视图时,我遇到了问题:因为我可以用两种方式存储迷宫(二维矩阵或被占用的单元格列表),现在我应该如何创建迷宫的文本表示,知道如何存储我的迷宫?我正在考虑用这个方法创建一个接口。

代码语言:javascript
复制
createTextRepresentation( ? labyrinth)

但是我的迷宫参数应该是什么类型呢?我对其他所有的课程都有这个问题:解决者,观察者?如何将这三种模式结合使用?

P.S.:我不是要求这些类的实际实现,只是对如何将它们组合在一起的一般想法。

EN

回答 1

Stack Overflow用户

发布于 2016-03-08 14:15:32

由于View类有迷宫设置器,所以createTextRepresentation方法不需要迷宫作为参数。

您的问题不是View的设计,而是模型的设计。Labyrinth接口需要有足够的表现力,以便可以在不知道实现细节的情况下使用该接口创建文本表示。

所以代码形状应该看起来像

代码语言:javascript
复制
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() { ... }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35868958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档