`
liwenge
  • 浏览: 78225 次
  • 性别: 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实例!初学者可以看看!

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

    MVC个人项目小型

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

    解决vs没有asp.net MVC

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

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

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

    mvc模式的贪吃蛇

    mvc模式的贪吃蛇,简单容易理解,可以下来看看

    ASP.NET MVC4

    ASP.NET MVC4,全英文的教程,大家英语好的可以原汁原味的看看

    MVC开发模式详解

    MVC开发模式详解,介绍MVC开发模式详解,看看。

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

    前台使用MVC3+JQ+JS,后台使用MVC3+EXTJS实现 视图使用MVC3最新视图引擎RAZOR

    [AS3] 时钟的MVC例子(适合初学MVC的人看)

    时钟的MVC例子(适合初学MVC的人看)

    几张图看明白MVC MVP MVVM

    几张图看明白MVC、MVP、MVVM, 希望对各位有帮助

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

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

    asp.net MVC 源码

    asp.net MVC 源码 需要的朋友可以下载看看了

    mvc3学习文档

    mvc3基本知识,翻译的一本书,不过没有翻译完,新手看看还是不错的,sportstore里卖的例子

    MVC 项目模板源码

    MVC 项目模板源码 此源代码非常适合新人理解并学习MVC的开发模式,本人将此源代码做了一遍,受益不少,有想学习MVC的朋友可以下载来看看

    基于MVC架构的购物车

    界面看起来简单,但其中融合了MVC的思想,另外还使用了Struts和Hibernate两个开源框架技术,是有ajax的实现

    MVC常用控件

    在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代。还好在asp.net mvc框架中也有自带的HtmlHelper和UrlHelper两个...先来看看HtmlHelper能帮我们生成一些什么样的html呢。直接看效果吧。

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

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

    C#中MVC2.0 MVC3.0 NHibernate 项目和库文件

    对于MVC初学者可以看里面的MVC2.0. 有经验的可以学习MVC3.0. 再者可以看看插件 ORM关于NHibernate的使用.文件写的狠详细,包括要添加的库文件我都包装好了.学习者绝对实用.

    asp mvc博客系统

    asp.net博客系统,采用 Mvc三层架构,大家试试看看啊

    PureMVC实现与实践——教程.pdf

    PureMVC实现与实践——教程....不错的pdf讲解的挺详细,大家下来看看。 PureMVC实现与实践——教程.pdf 不错的pdf讲解的挺详细,大家下来看看。 PureMVC实现与实践——教程.pdf 不错的pdf讲解的挺详细,大家下来看看。

Global site tag (gtag.js) - Google Analytics