class Program { static void Main(string[] args) { // 事件源 Student student = new Student("美女"); // 執行的事件 student.Sleep(); // 執行的時間 student.Bathe(); // 註冊監聽器 student.SetStudentListener(new MyStudent()); } } /// <summary> /// 事件源 /// </summary> public class Student { public string Name { get; set; } // 事件介面 private IStudentListener _interface; public Student(string name) { this.Name = name; } public void Sleep() { Console.WriteLine(Name + " 睡覺了 "); } public void Bathe() { if (_interface != null) _interface.Bathe(new EventObject(this)); Console.WriteLine(Name + " 在洗澡 "); } public void SetStudentListener(IStudentListener iListener) { this._interface = iListener; } } /// <summary> /// 介面 /// </summary> public interface IStudentListener { // 監聽的事件 void Bathe(EventObject e); } /// <summary> /// 事件源 只是負責將處罰事件的物件經行傳遞過來 /// </summary> public class EventObject { private object _eOobj; public EventObject(object o) { _eOobj = o; } public object GetObject() { return _eOobj; } } /// <summary> /// 監聽者 /// </summary> public class MyStudent : IStudentListener { public void Bathe(EventObject e) { Student student = (Student)e.GetObject(); Console.WriteLine(student.Name+" 洗澡中 "); } }
附加圖解 :
自己胡亂花的 方便初學者 看而已 這種模式 一個事件 只能有一個監聽者啊 一個動作 只能被一個人得知 。
我加上 委託事件 再來搞搞