在面试中,委托与事件几乎是必问的。如果面试官和面试者互不相识,面试官不问委托,那我严重怀疑这家公司的技术水平,这个可以说是C#入门与掌握的分水岭之一,非常重要。所以,这里我整理一片笔记,对委托和事件做一个全面的整理和归纳。这里重在理解,只有理解了才能真正掌握它。
目录
1. 为什么C#会有委托事件?
解决观察者模式的缺陷。这里又引申出一个问题,什么是观察者模式,观察者模式的缺陷又是什么?在回答这个问题前,我们其实已经知道一个答案,那就是先有设计模式中的观察者模式,再有委托事件这一技术。它有一个前后顺序,如果你要彻底学会委托事件,那么就要先学会观察者模式,还要了解观察者模式的缺陷。
2.观察者模式的缺陷:
观察者模式是对主题对象和观察者对象进行解耦,使双方都依赖与抽象,而不是依赖于对方的具体对象,使双方的变化都不会影响到对方的具体对象。当多个对象需要根据一个对象的状态发生相应的改变或操作时,可使用观察者模式。
这里我写一个小demo,非常简洁。还是猫和老鼠,猫是主题对象,人和老鼠是观察者。猫叫的时候,人和老鼠要执行相应操作。
使用观察者模式实现这一功能:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObserverCatDemo : MonoBehaviour
{
void Start()
{
CatSubject cat = new CatSubject();
Mouse mouse = new Mouse();
Person person = new Person();
cat.Add(mouse);
cat.Add(person);
cat.Call();
}
}
public abstract class Subjectss
{
public abstract void Add(Observerss observer);
public abstract void Remove(Observerss observer);
public abstract void Call