unity C# OOP学习笔记之七(事件)

什么是事件

1)事件是一种设计模式!叫法多【了解】
叫事件【事件设计模式】【事件模式】【事件模型】
叫通知模型
叫观察者设计模式【观察者模式】【观察者模型】
叫监听模型
重点:事件的使用步骤严格固定
2) 定义【记住】:event字面【事件】
事件是声明为委托类型的类的成员,
表示类的偶发的行为
一旦这个行为发生,往往要引起其它行为【方法】的自动执行
事件是用来实现两个或多个行为的联动调用的
3) 事件源 响应者

我感冒 我看病
语法:事件源:定义事件的类》
响应者【观察者】:行为2所在的类

事件的使用步骤
定义端1,3 必须再定义段调用端2,4可以在定义段
1定义事件:public event【可以省略 但是不建议】 委托类型 事件名;
2注册事件:事件源对象.事件 += 响应方法 【简化的写法】
传统写法如下
事件源对象.事件 +=new 委托类型(响应方法)
+= 这里注册符号 不同于复合加 i+=i
-= 取消注册
3触发事件:事件在类内部触发,触发代码同委托调用
事件定义在哪里就在哪里触发【1,3同一个类中】
4调用触发事件的方法
unity C# OOP学习笔记之七(事件)

事件模式的优点:分成多步
平台进行封装 共性常用的封装,
程序员完成个性化的即可!
发现 委托不用自己定义
事件不用自己定义
触发不用自己去实现
自己仅仅:注册,写方法即可!

何时使用委托而不使用接口
共性:声明和实现分开的:实现接口,实现委托
不同:最大的不同 接口实现在 定义端
委托实现在 调用端 灵活 不确定多样性
要封装一组方法,方法签名不同 接口
要表示一类方法,签名相同 委托!
委托和接口都允许类设计器分离类型声明和实现。
任何 类或 结构都能继承和实现给定的 接口。
可以为任何类上的方法创建 委托,前提是该方法符合委托的方法签名。
接口引用或委托可由不了解实现该接口或委托方法的类的对象使用。
既然存在这些相似性,那么类设计器何时应使用委托,何时又该使用接口呢?
在以下情况下,请使用委托:
• 当使用事件设计模式时。
• 当封装静态方法可取时。
• 当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
• 需要方便的组合。
• 当类可能需要该方法的多个实现时。
在以下情况下,请使用接口:
• 当存在一组可能被调用的相关方法时。
封装多个方法,多个方法签名不同
• 当类只需要方法的单个实现时。 类:接口
• 当使用接口的类想要将该接口强制转换为其他接口或类类型时。
Dogobj 接口 obj=(接口)Dogobj
• 当正在实现的方法链接到类的类型或标识时:例如比较方法。
给类扩展功能时,自定义类 要有个比较的方法,实现比较接口