事件是一种使对象或类能够提供通知的成员,比如对象O拥有一个事件E,其中想表达的思想就是:当事件E发生的时候,O可以有能力去通知别的对象。
事件用于对象或类间的动作协调与信息传递(消息推送)
事件多用在桌面、手机等开发的客户端编程,因为这些程序经常是用户通过事件来驱动的java语言里没有事件这种成员,也没有委托这种数据类型,java 的“事件”是使用接口来实现的MVC、MVP、MVVM等模式是事件模式更高级、更有效的玩法事件的五个组成部分:
事件的拥有者事件成员事件的响应者事件处理器事件的订阅--把事件处理器和事件关联在一起 using System; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic; using System.Linq; namespace AsyncExample { public class ClassInfoEventArgs : EventArgs { public string ClassGrade { get; set; } public string ClassName { get; set; } public ClassInfoEventArgs(string ClassGrade,string ClassName) { this.ClassGrade = ClassGrade; this.ClassName = ClassName; } } public class StudentInfo { public event EventHandler<ClassInfoEventArgs> showStudentInfo; public StudentInfo() { showStudentInfo += new EventHandler<ClassInfoEventArgs>(showStudentInfoMehtod); } private void showStudentInfoMehtod(object sender, ClassInfoEventArgs e) { Console.WriteLine("我是" + e.ClassGrade + e.ClassName+"的学生"); } public void callShowStudentInfo(ClassInfoEventArgs classInfoEvent) { showStudentInfo?.Invoke(this, classInfoEvent); } } class Program { static void Main(string[] args) { ClassInfoEventArgs classInfoEvent = new ClassInfoEventArgs("三年级","二班"); StudentInfo studentInfo = new StudentInfo(); studentInfo.callShowStudentInfo(classInfoEvent); } } }在上述代码中,主要描述的是student信息传递的方式,事件的响应者和拥有者都是StudentInfo本身,外部使用者调用事件callShowStudentInfo,并且传入参数,showStudentInfo事件处理器响应并且处理产生后续响应事件showStudentInfoMethod方法。