`
liwenge
  • 浏览: 79604 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

MVC( 大家看看有什么问题没有 )

阅读更多
package mvc;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

interface ModelInterface {
    void on();

    void stop();

    void setData();

    String getData();

    void changeState();

    void register(EasyObserver o);

    void notifyObservers();
}

interface ControllerInterface {
    void start();

    void stop();

    void changeState();
}

interface EasyObserver {
    void update();
}

class View extends JFrame implements ActionListener, EasyObserver {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private ControllerInterface controller;

    private ModelInterface model;

    private final JTextField text = new JTextField();

    private final JButton button = new JButton("Start");

    private void init() {
	this.setLocation(200, 200);
	button.addActionListener(this);
	text.setForeground(Color.RED);
	text.setEnabled(false);	
	Container c = this.getContentPane();
	c.setLayout(new BorderLayout());
	c.add(text, BorderLayout.CENTER);
	c.add(button, BorderLayout.SOUTH);
	this.pack();
	this.setResizable(false);
	this.setVisible(true);
    }

    public View(ControllerInterface controller, ModelInterface model) {
	super("MVC");
	this.controller = controller;
	this.model = model;
	model.register(this);
	this.controller.start();
	init();
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void changeState() {
	if (button.getText().equals("Start"))
	    button.setText("Stop");
	else
	    button.setText("Start");
	controller.changeState();
    }

    public void actionPerformed(ActionEvent e) {
	changeState();
    }

    public void update() {
	text.setText(model.getData());
    }
}

class Controller implements ControllerInterface {

    private ModelInterface model;

    public Controller(ModelInterface model) {
	this.model = model;
    }

    public void start() {
	model.on();
    }

    public void stop() {
	model.stop();
    }

    public void changeState() {
	model.changeState();
    }
}

class Model extends Thread implements ModelInterface {

    private final Random random = new Random();

    ArrayList<EasyObserver> observers = new ArrayList<EasyObserver>();

    private volatile boolean isTrue = true;

    Object locker = new Object();

    public Model() {
    }

    public void on() {
	start();
    }

    public void run() {
	while (true) {
	    try {
		synchronized (this) {
		    while(isTrue) {
			wait();
		    }
		    notifyObservers();
		}
	    } catch (InterruptedException e) {
	    }
	}
    }

    public String getData() {
	return new Integer(Math.abs(random.nextInt())).toString();
    }

    public void register(EasyObserver t) {
	observers.add(t);
    }

    public void setData() {

    }

    public synchronized void changeState() {
	if (isTrue == true)
	    notify();
	isTrue = !isTrue;
    }

    public void notifyObservers() {
	for (EasyObserver o : observers) {
	    o.update();
	}
    }
}

public class MVC {
    public static void main(String[] args) {
	ModelInterface model = new Model();
	ControllerInterface controller = new Controller(model);
	new View(controller, model);
    }
}

 

0
0
分享到:
评论

相关推荐

    MVC个人项目小型

    应该足够 目前这个小型项目还会进一步完善 目前开发了两天 先把demo和大家共享下 api在工程doc文件夹中 已经使用javadoc打包好 有疑问的可以联系我"&gt;哈哈 自己开发的一个小型mvc 大家可以下载看看 使用的技术:...

    MVC实例!初学者可以看看!

    在`Mvcdemo`实例中,可能会有`UserProfileView`或`LoginPageView`等视图文件,它们负责渲染用户界面,并将数据从模型中传递到用户界面上。 **3. Controller(控制器)** 控制器作为模型和视图之间的桥梁,处理用户...

    解决vs没有asp.net MVC

    里面有详细的说明文档,弄了一个word给大家看,简单在这介绍一下 安装顺序如下: AspNetMVC3Setup.exe AspNetMVC3Setup_CHS.exe AspNetMVC3ToolsUpdateSetup.exe AspNetMVC3ToolsUpdateSetup_CHS.exe

    MVC购物车用MVC结构+ORACLE 做得 比较简单 初学者可以看看

    标题"MVC购物车用MVC结构+ORACLE做得比较简单 初学者可以看看"表明这是一个关于使用Model-View-Controller(MVC)架构和Oracle数据库开发的简单购物车应用的教程,适合初级学习者。描述中的"用MVC结构+ORACLE做得...

    NIIT mvc4 请看清楚在下载

    "NIIT mvc4 请看清楚在下载" 这个标题提到了 "mvc4",这是对Microsoft ASP.NET MVC框架第四版的简称,它是一个用于构建动态网站的应用程序开发框架。NIIT(National Institute of Information Technology)可能是一...

    自己写的MVC3项目(有兴趣的朋友一起看看改进共同进步)

    这种结构有助于保持代码的清晰和可维护性。 首先,让我们深入了解一下MVC3。MVC3是微软ASP.NET MVC框架的一个版本,它在2011年发布,提供了许多新特性和改进,包括对Razor视图引擎的支持,增强了测试驱动开发(TDD...

    system.mvc.dll

    接下来,我们来看看x64和x86版本的System.Mvc.dll。这两个版本分别对应不同的处理器架构。x86版本适用于32位系统,而x64版本则是为64位系统设计的。选择正确的版本至关重要,因为错误的版本可能会导致应用程序无法...

    ASP.NET MVC 2.0 简单实例(无数据库,一看就懂)

    接下来,我们来看看如何开始创建一个ASP.NET MVC项目: 1. **新建项目**:在Visual Studio中,选择“文件”-&gt;“新建”-&gt;“项目”,然后选择ASP.NET MVC 2.0模板。 2. **添加控制器**:在解决方案资源管理器中,...

    经典必看-MVC经典后台管理系统源码.zip

    【标题】"经典必看-MVC经典后台管理系统源码.zip" 涉及的主要知识点是MVC(Model-View-Controller)设计模式在后台管理系统的应用。MVC是一种广泛用于Web开发的架构模式,旨在提高代码的可维护性和可扩展性。 ...

    Asp.net MVC会员管理系统.rar

    管理后台有用户管理、角色管理、邮件配置等功能 花了五天时间,终于做好了asp.net mvc后台管理系统,但...解决了mvc传递中文字符的问题 DB_51aspx下为Sql2005数据库,附加即可 默认管理员帐号/密码:qiaojun/123456

    PureMvc实例 PureMvc第一个实例

    现在,我们来看看"MyFirstPureMvc"项目中的具体实现: 1. **初始化**:项目启动时,通常会有一个主控制器`MainController`,它负责注册初始的命令,以便处理应用程序的启动流程。 2. **命令(Commands)**:项目中...

    PureMVC的例子

    描述中提到,“自己写的小例子,希望大家可以看得明白”,意味着这是一个个人创建的项目,旨在帮助学习者理解如何在实际项目中应用PureMVC框架。此外,它特别指出例子使用了BlazeDS,这是一个由Adobe提供的开源...

    Spring MVC使用Demo

    接着,让我们来看看注解的使用。在Spring MVC中,注解大大简化了配置过程。例如,`@Controller`注解标识一个类作为控制器,`@RequestMapping`用于映射HTTP请求到特定的方法,`@GetMapping`和`@PostMapping`分别处理...

    Asp.net MVC 电子书

    虽然描述部分提供的信息较为重复,但从标题和标签来看,很明显本书旨在深入讲解ASP.NET MVC框架的相关技术和实践。 ### ASP.NET MVC 概述 ASP.NET MVC 是一个开源的Web应用程序框架,它基于模型-视图-控制器...

    asp.net mvc 分页控件 包含ajax分页 最简单

    自己写的分页控件,在 ...同时支持MVC2 MVC3并有简单sample.非常简单。我相信大部分人能看懂我的sample 使用: 1、引用我的DLL 2、自己要坐分页的Model继承至 INetMvcPage 3、在页面上 @...有什么BUG欢迎提出。

    MVC关系演示图

    根据提供的文件信息,我们可以深入探讨MVC(Model-View-Controller)架构模式的相关知识点,以及该模式在软件开发中的应用。 ### MVC架构模式简介 MVC是一种常用的软件设计模式,主要用于构建用户界面。它将应用...

    几张图看明白MVC MVP MVVM

    MVC、MVP和MVVM是三种常见的软件架构设计模式,它们主要用于分离用户界面(UI)与业务逻辑,以提高代码的可维护性和可测试性。下面将详细地介绍这三种模式的工作原理、组成部分以及它们之间的异同。 **MVC(Model-...

    winform-mvc例子

    将MVC应用于WinForms可能看起来不寻常,但通过这种方式,我们可以增强代码的可测试性和可维护性。以下是对"winform-mvc例子"项目中可能涉及的知识点的详细解释: 1. **MVC模式**: MVC模式是软件设计中的一种结构...

    NFine-MVC快速开发框架

    NFine-MVC快速开发框架是基于C#.NET平台,利用ASP.NET MVC技术、Entity Framework 6(EF6)以及Bootstrap前端框架构建的一款高效能、高效率的开发工具。这款框架旨在减少开发过程中重复的工作量,提升开发效率,帮助...

    可重用的MVC分页方法(ASP.NET MVC)

    在这个分页场景中,模型负责数据的获取和处理,控制器处理用户请求并传递数据到视图,视图则展示给用户看。 1. **分页概念**:分页是将大量数据分成小块,以便用户可以逐页查看,提高网页加载速度和用户体验。通常...

Global site tag (gtag.js) - Google Analytics