demo监控
import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class Demo1 {
/**
* 面试题:请描述一下java事件监听机制。
* 1.java的事件监听机制涉及到三个组件:事件源、事件监听器、事件对象
* 2.当事件源上发生操作时,它将会调用事件监听器的一个方法,并在调用这个方法时,会传递事件对象过来。
* 3事件监听器由开发人员编写,开发人员在事件监听器中,通过事件对象可以拿到事件源,从而对事件源上的操作进行处理。
*
*/
public static void main(String[] args) {
Frame f = new Frame();
f.setSize(400, 400);
f.setVisible(true);
f.addWindowListener(new MyListener());
}
}
class MyListener implements WindowListener{
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowClosing(WindowEvent e) {
Frame f = (Frame) e.getSource();
f.dispose();
}
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
public void windowIconified(WindowEvent e) {
System.out.println("hahahaah!!");
}
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
}
观察者设计模式
//观察者设计模式(observer设计模式)
class Person{
private PersonListener listener;
public void registerListener(PersonListener listener){
this.listener = listener;
}
public void run(){
if(listener!=null){
Even even = new Even(this);
this.listener.dorun(even);
}
System.out.println("runn!!");
}
public void eat(){
if(listener!=null){
Even e = new Even(this);
this.listener.doeat(e);
}
System.out.println("eat!!");
}
}
interface PersonListener{
public void dorun(Even even);
public void doeat(Even even);
}
class Even{
private Person person;
public Even() {
super();
// TODO Auto-generated constructor stub
}
public Even(Person person) {
super();
this.person = person;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}