相关疑难解决方法(0)

如何在MVC中构建模型?

我只是掌握了MVC框架,我常常想知道模型中应该有多少代码.我倾向于有一个数据访问类,其方法如下:

public function CheckUsername($connection, $username)
{
    try
    {
        $data = array();
        $data['Username'] = $username;

        //// SQL
        $sql = "SELECT Username FROM" . $this->usersTableName . " WHERE Username = :Username";

        //// Execute statement
        return $this->ExecuteObject($connection, $sql, $data);
    }
    catch(Exception $e)
    {
        throw $e;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的模型往往是映射到数据库表的实体类.

模型对象是否应具有所有数据库映射属性以及上面的代码,或者可以将实际上数据库工作的代码分开吗?

我最终会有四层吗?

php architecture oop model-view-controller model

541
推荐指数
4
解决办法
17万
查看次数

重写到MVC后GUI无法正常工作

我正在练习MVC风格的编程.我在一个文件中有一个Mastermind游戏,工作正常(可能除了"Check"按钮在开始时不可见).

http://paste.pocoo.org/show/226726/

但是当我把它重写为模型,视图,控制器文件时 - 当我点击空Pin(应该更新,并重新绘制新颜色)时 - 注意到了.谁能在这里看到任何问题?我尝试在不同的地方放置repaint(),但它根本不起作用:/

主要:

public class Main { 
    public static void main(String[] args){
        Model model = new Model();
        View view = new View("Mastermind", 400, 590, model);
        Controller controller = new Controller(model, view); 
        view.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

型号:

import java.util.Random;

public class Model{
    static final int
    LINE = 5,
    SCORE = 10, OPTIONS = 20;
    Pin pins[][] = new Pin[21][LINE];
    int combination[] = new int[LINE];
    int curPin = 0;
    int turn = 1;
    Random generator = new Random(); …
Run Code Online (Sandbox Code Playgroud)

java model-view-controller user-interface swing

121
推荐指数
2
解决办法
4万
查看次数

Java MVC - 如何将完成的文本游戏划分为MVC?

现在坐在这里几个小时试图解决这个问题,所以对这个大问题有点同情.:)

目标:我只想将完成的代码分成MVC(模型视图控制器)部分.我已完成游戏逻辑并基于文本 - 代码工作正常.

问题:嗯,我想将这个代码实现到MVC中,但是在哪里解释它应该使用基于文本的MODEL?因为VIEW仅用于布局(图形化)正确吗?我真的很难搞清楚从哪里开始.任何指针都会很棒!

这是我的游戏逻辑代码:

import mind.*;
import javax.swing.*;
import java.util.*;
import java.lang.*;
import java.awt.*;

public class Drive {
String[] mellan;
boolean gameEnd, checkempty, checkempty2, enemy, enemy2;
String gr,rd,tom;
int digits;

public Drive() {
    // Gamepieces in textform
    gr="G"; rd="R"; tom=" ";


    mellan = new String[7];
    String[] begin = {gr,gr,gr,tom,rd,rd,rd};
    String[] end = {rd,rd,rd,tom,gr,gr,gr};

    //input
    Scanner in = new Scanner(System.in);

    mellan=begin;
    gameEnd=false;
    while (gameEnd == false) {
        for(int i=0; i<mellan.length; i++) {
            System.out.print(mellan[i]);
        }
        System.out.print("        Choose 0-6: …
Run Code Online (Sandbox Code Playgroud)

java model-view-controller

9
推荐指数
1
解决办法
6454
查看次数

JAVA Swing MVC - 主控制器?

我在设计我正在尝试开发的应用程序的体系结构时遇到了一些麻烦.我正在研究JAVA,我开始研究这个应用程序,因为我想加深我对JAVA,架构和模式的整体了解.我想按照指南来制作一个可重用,低耦合的应用程序,就像它应该的那样.该应用程序只有一个JFrame,但在其中有几个JPanel,每个JPanel代表一个应用程序的模块.

问题是:在JAVA Swing中,如何实现适当的MVC模式?我在如何理解它应该如何完成的方式上挣扎.

我是否应该拥有一个主控制器类,它包含对所有其他控制器的引用?(我有一张图片来证明这一点,在这里:https://docs.google.com/file/d/0B7tBdn5slIFeY2FoSmxESTREQ1k/edit?usp =sharing)

在这种情况下,是否所有需要更改正在呈现的模块的事件都会重定向到主控制器?

或者我应该将JFrame与应用程序的控制器耦合,并直接与它们通信?

基本上,我想知道我是否需要一个"管理"所有其他课程.我已经阅读了几个解释和不同的意见,但我相信这有点具体.

希望我已经清楚了(并希望我的解释比我的绘图更好:)).

编辑: 应用程序用法的示例:

  • 应用程序的整个生命周期中的一个(仅一个)JFrame;
  • 菜单将在左侧,如BorderLayout.WEST;
  • 应用程序的当前模块将位于中心,如BorderLayout.CENTER;
  • 当用户按下菜单的一个按钮时,相应的模块被加载到BorderLayout.CENTER;

菜单(View)是否应该拥有自己的Controller,并且此Controller与JFrame通信?JFrame将新模块加载到它的布局中?或者JFrame应该有自己的控制器(或模型,如Gilbert Le Blanc所说)?

我知道这可能看似具体,或易于理解,但每当我想到桌面应用程序时,我都很难理解这一点.

java model-view-controller swing controller

5
推荐指数
1
解决办法
4942
查看次数

Model-View-Presenter被动视图:bootstraping - 谁最初显示视图?

在Passive View Model View Presenter模式中,谁负责显示视图?我找到了其他MVP版本的相关答案,但它们似乎不适用于被动视图版本.

我有一个使用Java Swing的具体示例.它非常简单,但基本上我们有一个SwingCustomersView内部构建带有表(客户列表)的JPanel和一个显示当前所选客户年龄的标签.在表格中选择客户后,演示者将从模型中检索选定的客户年龄.我认为这个例子是MVP被动视图的正确实现,但如果我错了,请纠正我.

问题是我们如何引导这些类?例如,如果我们想要SwingCustomersView在JFrame中显示.如何做到这一点?我想象的是:

void launcher() {
    CustomersModel model = new CustomersModel();
    SwingCustomersView view = new SwingCustomersView();
    CustomersPresenter presenter = new CustomersPresenter(view, model);
}
Run Code Online (Sandbox Code Playgroud)

这是初始接线,但尚未显示任何内容.我们如何实际显示视图?(1)launcher(),(2)SwingCustomersView或(3)是否有责任CustomersPresenter显示视图?不幸的是,我不相信这些都是非常好的,你可以从下面的想法中看到.也许还有另一种方式?

(1.a):发射器

制作SwingCustomersView扩展JFrame,并将其内部JPanel添加到自身的内容窗格中.然后我们可以这样做:

void launcher() {
    CustomersModel model = new CustomersModel();
    SwingCustomersView view = new SwingCustomersView();
    CustomersPresenter presenter = new CustomersPresenter(view, model);
    view.setVisible(true); // Displays the view
}
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,我们不会将presenter实例用于任何事情.这不奇怪吗?它只是用于布线,我们也可以删除变量而只是做new CustomersPresenter(view, model).

(2):SwingCustomersView

SwingCustomersView拿一个Container …

java mvp swing

5
推荐指数
1
解决办法
2321
查看次数

ActionListener在Java GUI App的控制器中是个好主意吗?

我不想尝试遵循MVC模式.在互联网上,我看到最着名的例子是计算器,例如这里.我开始使用这种MVC模式的实现.但是现在我对控制器中的动作监听器有些疑虑,因为它们倾向于查看.

有很多变化与视图相关的主要原因 - 字体,颜色,边框等.此外还有仅仅修改视图的actionlisteners!因此,在控制器中实现这样的actionlistener要困难得多(与视图中的简单内部匿名类相比).此外,它需要从控制器访问许多视图元素.

我有一个想法是在控制器和一些视图中保留一些actionlisteners,但它可能导致将来混乱.所以我想听听其他人的想法.

PS这个问题与许多ActionListenerMVC模式不重复

java model-view-controller swing design-patterns

3
推荐指数
1
解决办法
6126
查看次数