5261人加入学习
(17人评价)
游戏开发中的设计模式(Unity 5.6)
价格 ¥ 280.00
该课程属于 Unity - A计划(永久有效期) 请加入后再学习

他写的太绕了,看的难受,重新写了下

//示例
public class _09ObserverMode : MonoBehaviour
{
    private void Start()
    {
        //
        S1 s1 = new S1();

        Observer ob1 = new Observer("ob1");
        Observer ob2 = new Observer("ob2");

        // 订阅事件  
        s1.Add(ob1);
        s1.Add(ob2);

        // 状态变化,通知所有观察者 
        s1.State = "温度 37";

        // 取消订阅示例  
        s1.Remove(ob1);
        s1.Remove(ob2);
    }
}

//观察者
public class Observer
{
    // 名称
    private string name;

    // 构造函数
    public Observer(string name)
    {
        this.name = name;
    }

    // 更新
    public void Update(string str)
    {
        Debug.Log(name + " 收到了通知,更新了 " + str);
    }
}

//定义被观察者
public class Subject
{
    // 定义事件  
    private Action<string> onEvent;

    // 订阅事件  
    public void Add(Observer ob)
    {
        this.onEvent += ob.Update;
    }

    // 取消订阅事件  
    public void Remove(Observer ob)
    {
        this.onEvent -= ob.Update;
    }

    // 触发事件,通知所有观察者  
    public void Trigger(string str)
    {
        this.onEvent?.Invoke(str);
    }
}

//实现被观察者
public class S1 : Subject
{
    // 状态
    private string mState;

    // 属性
    public string State
    {
        get
        {
            return this.mState;
        }
        set
        {
            // 状态变化,通知所有观察者  
            this.mState = value;              
            this.Trigger(value);
        }
    }
}

 

[展开全文]

授课教师

加我的QQ问问题:804632564

课程特色

下载资料(1)
视频(167)