扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:佚名 来源:程序员杂志 2007年11月4日
关键字:
class Publisher { private ArrayList listenerList = new ArrayList(); public void addKeyListener(KeyListener l) { listenerList.add(l); } public void fireKeyPressedEvent(int keyCode) { Iterator iter = listenerList.iterator(); while (iter.hasNext()) { KeyListener l = (KeyListener)iter.next(); l.keyPressed(keyCode); } } } |
Publisher publisher = new Publisher(); ... publisher.KeyEventHandlerDelegate += KeyPressedHandler; //等同于 //publisher.EventHandlerDelegate.add(KeyPressedHandler); |
Event type definition: public delegate void KeyPressedDelegate(int keyCode); Publisher: class Publisher { public KeyPressedDelegate KeyPressed; ... void FireKeyPressedEvent(int KeyCode) { if (KeyPressed != null) //依次调用记录在KeyPressed中的所有方法 KeyPressed(keyCode); } } Subscriber: void OnKeyPressed(int keyCode) { ... } void OnKeyPressed2(int keyCode) { ... } ... Publisher publisher = new Publisher(); publisher.KeyPressed = OnKeyPressed; //预订 publisher.KeyPressed += OnKeyPressed2; //预订另一个 |
public delegate void KeyPressedDelegate(int keyCode); class Publisher { public event KeyPressedDelegate KeyPressed; ... void FireKeyPressedEvent(int KeyCode) { if (KeyPressed != null) //只有在Publisher才可以 KeyPressed(keyCode); } } // outside of Publisher... Publisher publisher = new Publisher(); // !!! 不允许 !!! 会编译错误 !!! publisher.KeyPressed(100); |
class Publisher { protected event KeyPressedDelegate m_KeyPressed; // event accessor。定义一个事件属性。 public event KeyPressedDelegate KeyPressed { add { m_KeyPressed += value; } remove { m_KeyPressed -= value; } } void FireKeyPressedEvent(int KeyCode) { if (KeyPressed != null) m_KeyPressed(keyCode); } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者