观察者模式和代理模式

观察者模式:通过计时操作,不断地进行询问。(耗费资源)
举例:每隔0.5s播放一个音效。

/*
 *观察者模式:不断地询问,进行定时操作 
 */
public class Obsertor : MonoBehaviour
{
    //定义AudioSource组件
    AudioSource audioSource;
    //设置定时器
    float timer = 0;
    // Start is called before the first frame update
    void Start()
    {
        //获取Audio Source组件
        audioSource = transform.GetComponent<AudioSource>();
    }

    // Update is called once per frame
    void Update()
    {
        timer += Time.deltaTime;
        //如果时间超过3S,播放音效
        if (timer >= 3f)
        {
            audioSource.Play();
            timer = 0;
        }
       
    }
}

代理模式的实现

/*
 * 代理模式:方法的指针指向其他类的方法,更像是一种工具。
 * 用途:一个类要引用另一个类的方法。
 */
public class Husband {
    Wife myWife=new Wife();
    public void AddMoney() { myWife.leadMoney(); }
    public void Notice() { Debug.Log("Say Bad Words!"); }

}
public class Wife {
    public void leadMoney() { }
    //定义一个委托:带方法的指针
    public delegate void WifeSister();
    public WifeSister wifeSister;
    //实现委托
    public void SayBadWords() { wifeSister(); }

}
public class DaiLi : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Husband husTem = new Husband();
        Wife wifTem = new Wife();
        husTem.AddMoney();
        //带方法的指针指向其他类的方法
        wifTem.wifeSister += husTem.Notice;
        //委托的实现
        wifTem.SayBadWords();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值