Unity中观察者模式

来源:互联网 发布:老人坐便椅子淘宝网 编辑:程序博客网 时间:2024/05/16 17:42

项目的优化以及层次的提升学习,通过一些简单的demo一起学习


using UnityEngine;

using System.Collections;
using System.Collections.Generic;
using System;


abstract class Subject
{
    protected List<People> observer = new List<People>();


    public abstract void AddPeople(People p);
    public abstract void RomovePeople(People p);
    public abstract void PeopleHowtodo();
}


class OldLady : Subject
{
    public override void AddPeople(People p)
    {
        observer.Add(p);
    }


    public override void PeopleHowtodo()
    {
        foreach (People p in observer)
        {
            p.DoSomething();
        }
    }


    public override void RomovePeople(People p)
    {
        observer.Remove(p);
    }
}




interface People
{
    void DoSomething();
}


class Child : People
{
    public void DoSomething()
    {
        Debug.Log(typeof(Child).ToString()+ "  help the OldLady");
    }
}


class Man : People
{
    public void DoSomething()
    {
        Debug.Log(typeof(Man).ToString() + "  don't help the OldLady");
    }
}


class OldMan : People
{
    public void DoSomething()
    {
        Debug.Log(typeof(OldMan).ToString() + "  is thinking");
    }
}


public  class Test : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            Subject oldlady = new OldLady();
            People child = new Child();
            People man = new Man();
            People oldman = new OldMan();


            oldlady.AddPeople(child);
            oldlady.AddPeople(man);
            oldlady.AddPeople(oldman);


            oldlady.PeopleHowtodo();
        }
    }
}

原创粉丝点击