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

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

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简析
}

视图类(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简析package com.sitinspring;
MVC1,MVC2简析
MVC1,MVC2简析
import java.util.Observable;
MVC1,MVC2简析
}

更新状态辅助类:

MVC1,MVC2简析package com.sitinspring;
MVC1,MVC2简析
}

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

2MVC2模式

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

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

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

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

然后View进行显示.

这种模式相对MVC优势很明显,首先ModelView无需继承甚么东西,其次ModelView无需了解对方的存在,只需准备相应的接口而已;缺点是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简析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简析
MVC1,MVC2简析
import javax.swing.JButton;
MVC1,MVC2简析
import javax.swing.JFrame;
MVC1,MVC2简析
import javax.swing.JLabel;
MVC1,MVC2简析
}

模块类:

 

MVC1,MVC2简析package com.sitinspring;
MVC1,MVC2简析
}

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
  • 2022-12-23
  • 2021-10-25
  • 2022-12-23
  • 2022-01-25
  • 2021-09-23
猜你喜欢
  • 2021-09-02
  • 2021-12-01
  • 2022-02-17
  • 2022-12-23
  • 2022-12-23
  • 2021-06-21
  • 2021-12-07
相关资源
相似解决方案