MVC1,MVC2简析(转载)

转载地址:http://www.blogjava.net/sitinspring/archive/2007/11/05/158343.html

 

一般来说,可以把系统粗略的分为三个层次,视图层,简称为 View,它负责数据的输出和输入;业务层,简称为 Model,它代表程序的实际业务;控制层,简称为 Controller,处理界面的相应并调用业务层进行处理,有时把 View Controller两层合称为 UI层。

在程序发展的历史上, MVC模式进过了多次演化, MVC1 MVC2是两种比较典型的模式,它们的区别主要在于 View Model的联系方式上。

1 MVC1 模式

这种模式主要用于桌面程序 ,使用观察者模式实现 ,具体来说就是让 View充当观察者来观察 Model的变化 ,而用户交互控制的地方用匿名类的方式统一放在 controller .

View接受用户输入 ,并将交互数据传递到 Controller.

Controller统一进行处理命令 ,交由 Model处理具体的业务 .

进过处理 Model更新后 ,通知 View进行更新 .

这种模式在旧的桌面应用程序使用较多,但是它的 Model必须继承 Observable类, View必须实现 Observer接口,人为加大了继承体系的复杂度;而且 Model通知 View的方式使 View必须了解 Model的结构,无谓的加大了两个类的耦合程度。这些缺点使这种模式逐渐淡出了程序舞台。

MVC1和MVC2区别(转载)

MVC1和MVC2区别(转载)

代码如下:
Control类:

MVC1和MVC2区别(转载)package  com.sitinspring;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)
import  java.awt.event.ActionEvent;
MVC1和MVC2区别(转载)
import  java.awt.event.ActionListener;
MVC1和MVC2区别(转载)
import  java.awt.event.WindowAdapter;
MVC1和MVC2区别(转载)
import  java.awt.event.WindowEvent;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
/** */ /**
MVC1和MVC2区别(转载)  * 控制类
MVC1和MVC2区别(转载)  * 
MVC1和MVC2区别(转载)  * 
@author  sitinspring([email protected])
MVC1和MVC2区别(转载)  * 
MVC1和MVC2区别(转载)  * @date 2007-11-5
MVC1和MVC2区别(转载)  
*/

MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
public   class  Mvc1Ctrl  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)     
private  Mvc1View view;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
private  Mvc1Model model;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public  Mvc1Ctrl()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         view 
=   new  Mvc1View();
MVC1和MVC2区别(转载)         model 
=   new  Mvc1Model();
MVC1和MVC2区别(转载)         model.addObserver(view);
MVC1和MVC2区别(转载)         handleEvents();
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
//  处理事件响应
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
     private   void  handleEvents()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         addCloseLintener();
MVC1和MVC2区别(转载)         addButtonListener();
MVC1和MVC2区别(转载)         addButtonListener2();
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
//  窗体关闭事件相应
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
     private   void  addCloseLintener()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)         view.addWindowListener(
new  WindowAdapter()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)             
public   void  windowClosing(WindowEvent e)  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)                 System.out.println(
" Exit MVC1 " );
MVC1和MVC2区别(转载)                 System.exit(
0 );
MVC1和MVC2区别(转载)             }

MVC1和MVC2区别(转载)         }
);
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
private   void  addButtonListener()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)         view.getButton().addActionListener(
new  ActionListener()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)             
public   void  actionPerformed(ActionEvent e)  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)                 model.showText();
MVC1和MVC2区别(转载)             }

MVC1和MVC2区别(转载)         }
);
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)     
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
private   void  addButtonListener2()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)         view.getButton2().addActionListener(
new  ActionListener()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)             
public   void  actionPerformed(ActionEvent e)  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)                 model.showText2();
MVC1和MVC2区别(转载)             }

MVC1和MVC2区别(转载)         }
);
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载) }

视图类(View) :

MVC1和MVC2区别(转载)package  com.sitinspring;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)
import  java.awt.Dimension;
MVC1和MVC2区别(转载)
import  java.awt.GridLayout;
MVC1和MVC2区别(转载)
import  java.awt.Toolkit;
MVC1和MVC2区别(转载)
import  java.util.Observable;
MVC1和MVC2区别(转载)
import  java.util.Observer;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)
import  javax.swing.JButton;
MVC1和MVC2区别(转载)
import  javax.swing.JFrame;
MVC1和MVC2区别(转载)
import  javax.swing.JLabel;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
/** */ /**
MVC1和MVC2区别(转载)  * 视图类(View)
MVC1和MVC2区别(转载)  * 
MVC1和MVC2区别(转载)  * 
@author  sitinspring([email protected])
MVC1和MVC2区别(转载)  * 
MVC1和MVC2区别(转载)  * @date 2007-11-5
MVC1和MVC2区别(转载)  
*/

MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
public   class  Mvc1View  extends  JFrame  implements  Observer  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)     
private   static   final   long  serialVersionUID  =   621145935910133202L ;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
private  JButton button;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
private  JLabel label;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
private  JButton button2;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
private  JLabel label2;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public  Mvc1View()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         locateView(
300 200 );
MVC1和MVC2区别(转载)         
this .setTitle( " MVC1 Program " );
MVC1和MVC2区别(转载)         setupComponents();
MVC1和MVC2区别(转载)         
this .setVisible( true );
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
//  当模块更新时,此函数会被调用
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
     public   void  update(Observable o, Object arg)  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         Mvc1Model model 
=  (Mvc1Model) o;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)         
if  (model.getUpdateState().equals(Mvc1UpdateState.UpdateLabel))  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)             label.setText(model.getResponseText());
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)         }
  else   if  (model.getUpdateState().equals(Mvc1UpdateState.UpdateLabel2))  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)             label2.setText(model.getResponseText());
MVC1和MVC2区别(转载)         }

MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
//  定位程序在屏幕正中并设置程序大小
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
     private   void  locateView( int  width,  int  height)  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         Dimension screenSize 
=  Toolkit.getDefaultToolkit().getScreenSize();
MVC1和MVC2区别(转载)         
this .setSize(width, height);
MVC1和MVC2区别(转载)         
this .setLocation(screenSize.width  /   2   -  width  /   2 , screenSize.height
MVC1和MVC2区别(转载)                 
/   2   -  height  /   2 );
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
//  初始化内部组件
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
     private   void  setupComponents()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         button 
=   new  JButton( " 点击响应事件1 " );
MVC1和MVC2区别(转载)         label 
=   new  JLabel( "   等待事件响应1 " );
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)         button2 
=   new  JButton( " 点击响应事件2 " );
MVC1和MVC2区别(转载)         label2 
=   new  JLabel( "   等待事件响应2 " );
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)         setLayout(
new  GridLayout( 2 2 ));
MVC1和MVC2区别(转载)         add(button);
MVC1和MVC2区别(转载)         add(label);
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)         add(button2);
MVC1和MVC2区别(转载)         add(label2);
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public  JButton getButton()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         
return  button;
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public  JButton getButton2()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         
return  button2;
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载) }

模块类 :

MVC1和MVC2区别(转载)package  com.sitinspring;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)
import  java.util.Observable;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
/** */ /**
MVC1和MVC2区别(转载)  * 模块类
MVC1和MVC2区别(转载)  * 
@author  sitinspring([email protected])
MVC1和MVC2区别(转载)  *
MVC1和MVC2区别(转载)  * @date 2007-11-5
MVC1和MVC2区别(转载)  
*/

MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
public   class  Mvc1Model  extends  Observable MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)     
private  String responseText;
MVC1和MVC2区别(转载)     
private  String updateState;
MVC1和MVC2区别(转载)     
MVC1和MVC2区别(转载)     
//  用于通知View更新,此函数被调用后View的update函数会被调用
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
     private   void  notifyView() MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         setChanged();         
MVC1和MVC2区别(转载)         notifyObservers();
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)     
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public   void  showText() MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         updateState
= Mvc1UpdateState.UpdateLabel;
MVC1和MVC2区别(转载)         responseText
= "   事件1响应完毕 " ;
MVC1和MVC2区别(转载)         notifyView();
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)     
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public   void  showText2() MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         updateState
= Mvc1UpdateState.UpdateLabel2;
MVC1和MVC2区别(转载)         responseText
= "   事件2响应完毕 " ;
MVC1和MVC2区别(转载)         notifyView();
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public  String getResponseText()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         
return  responseText;
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public  String getUpdateState()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         
return  updateState;
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载) }

更新状态辅助类:

MVC1和MVC2区别(转载)package  com.sitinspring;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
public   class  Mvc1UpdateState MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)     
public   static   final  String UpdateLabel = " updateLabel " ;
MVC1和MVC2区别(转载)     
public   static   final  String UpdateLabel2 = " updateLabel2 " ;
MVC1和MVC2区别(转载) }

 

MVC1示例代码下载:
http://www.blogjava.net/Files/sitinspring/MVC1.rar

2 MVC2模式

这种模式首见于网络程序,起初因为 Model无法通知到 Web程序的界面而发明,这种模式采用 Controller做中介者,一方面取得 View的输入,然后交由 Model层处理,之后再把返回的数据传递到 View

View接受用户输入 ,并传递到 Controller.

Controller统一进行处理命令 ,交由 Model处理具体的业务 .

进过处理 Model更新后 ,Controller会选一个 View并把 Model内容传递 (request,session)给它 (forward).

然后 View进行显示 .

这种模式相对 MVC 优势很明显,首先 Model View 无需继承甚么东西,其次 Model View 无需了解对方的存在,只需准备相应的接口而已;缺点是 Controller 层变得相对复杂了。

MVC1和MVC2区别(转载)

MVC1和MVC2区别(转载)
代码如下:
控制类:

MVC1和MVC2区别(转载)package  com.sitinspring;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)
import  java.awt.event.ActionEvent;
MVC1和MVC2区别(转载)
import  java.awt.event.ActionListener;
MVC1和MVC2区别(转载)
import  java.awt.event.WindowAdapter;
MVC1和MVC2区别(转载)
import  java.awt.event.WindowEvent;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
/** */ /**
MVC1和MVC2区别(转载)  * 控制类
MVC1和MVC2区别(转载)  * 
MVC1和MVC2区别(转载)  * 
@author  sitinspring([email protected])
MVC1和MVC2区别(转载)  * 
MVC1和MVC2区别(转载)  * @date 2007-11-5
MVC1和MVC2区别(转载)  
*/

MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)
public   class  Mvc2Ctrl  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)     
private  Mvc2View view;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     
private  Mvc2Model model;
MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)MVC1和MVC2区别(转载)     
public  Mvc2Ctrl()  MVC1和MVC2区别(转载) {
MVC1和MVC2区别(转载)         view 
=   new  Mvc2View();
MVC1和MVC2区别(转载)         model 
=   new  Mvc2Model();
MVC1和MVC2区别(转载)         handleEvents();
MVC1和MVC2区别(转载)     }

MVC1和MVC2区别(转载)
MVC1和MVC2区别(转载)     

相关文章: