java
1,先自定义一个事件 public class MyEvent extends java.util.EventObject{ public MyEvent(Object source) { super(source); } } 2,再自定义一个监听器 public class MyListener implements java.util.EventListener{ //这里是当事件发生后的响应过程 public void EventActivated(MyEvent me) { System.out.println("事件已经被触发"); } } 3,以下这个类为触发事件的事件源 public class MyObject { private Vector vectorListeners=new Vector(); public synchronized void addMyListener(MyListener ml) { vectorListeners.addElement(ml); } public synchronized void removeMyListener(MyListener ml) { vectorListeners.removeElement(ml); } protected void activateMyEvent() { Vector tempVector=null; MyEvent e=new MyEvent(this); synchronized(this) { tempVector=(Vector)vectorListeners.clone(); for(int i=0;i<tempVector.size();i++) { MyListener ml=(MyListener)tempVector.elementAt(i); ml.EventActivated(e); } } } //定义一个公用方法用于触发事件 public void test() { activateMyEvent(); } } 4,测试类 public class Test { public static void main(String[] args) { MyObject mo=new MyObject(); //注册该事件 mo.addMyListener(new MyListener()); //触发该事件 mo.test(); } }
c#
interface IEvent { object Source { get; set; } } interface IListener { void EventActivated(IEvent e); } class MyEvent : IEvent { public MyEvent(object source) { _source = source; } private object _source; #region IEvent 成员 public object Source { get { return _source; } set { _source = value; } } #endregion } class MyListener : IListener { #region IListener 成员 public void EventActivated(IEvent e) { throw new NotImplementedException(); } #endregion } class MyObject { private List<IListener> _listeners = new List<IListener>(); public void addListener(IListener listener) { _listeners.Add(listener); } public void removeListener(IListener listener) { _listeners.Remove(listener); } protected void activateEvent() { MyEvent e = new MyEvent(this); foreach (IListener listener in _listeners) listener.EventActivated(e); } public void test() { activateEvent(); } }