MVC设计模式并不是实际所谓的编程模式,而是设计软件总体框架使用到的设计模式,是针对不同作用代码组织成一个完整的应用程序所给出的优秀的组织方案。它是将显示界面的代码放于一处,将控制逻辑放于一处,最后将对视图的操作与所进行的控制逻辑绑定在一起,显然观察者模式对于实现这一动态的绑定作用重大。
绑定一词可以在Java中的很多地方找到,例如下面的代码用到的是动态绑定机制:
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.Container;
public class Test extends JFrame{
JButton button=new JButton(“Test”);
public Test(){
Container con=this.getContentPane();
con.add(button);
ActionListener listener=new Handler(button);
button.addActionListener(listener);
this.setSize(400,300);
this/setVisible(true);
this.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE();
}
}
Public static void main(String[] args){
New Test();
}
}
class Handler implements ActionListener{
JComponent button;
public Handler(JComponent button){
this.button=button;
}
ActionListener listener=new ActionListener(){
Public void actionPerformed(ActionEvent e){
button.setText(“ Good bye”);
}
这里的 ActionListener listener=new Handler(button);
就是动态绑定的典型例子。
又如JNDI将名字与对象映射在一起也是绑定的表现形式。MVC模式与观察着模式关系密切,现在看一看另一个例子,将JLabel改造为JButton,其中可以看到Java 的DEM模型的观察者模式的实现方法:
/*
* JTag.java
*
* Created on 2007年11月18日, 下午7:08
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package org.miao513;
import javax.swing.JLabel;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;