blog_yuan 发表于 2013-1-6 02:21:50

设计模式之观察者用委托的方式实现

<div id="cnblogs_post_body">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleDelegate514
{
    class Program
    {
      static void Main( string[ ] args )
      {
            Person person = new Person( );
            message mess = new message( person, "美女即将下凡了" );
            message mess1 = new message( person, "不要在挖鼻孔了   " );
             person.state = "气象局";
            person.AddOberser( new EventHandlers( mess1.Message ) );
            person.AddOberser( mess.Message );
            person.AddOberser( mess1.Message );
            person.Remoce( mess1.Message );
            person.Live( );
            Console.ReadLine( );
      }
    }
    //public delegate void EventHandlers( Person persin, string msg );
    public delegate void EventHandlers();
    public class Person
    {
      public string state { get; set; }
      List<EventHandlers> lice = new List<EventHandlers>( );
      //添加委托
      public void AddOberser( EventHandlers eventHandlers )
      {
            lice.Add( eventHandlers );
      }
      /// <summary>
      /// 移出委托
      /// </summary>
      /// <param name="eventHandlers"></param>
      public void Remoce( EventHandlers eventHandlers )
      {
            lice.Remove( eventHandlers );
      }
      /// <summary>
      /// 通知观察者
      /// </summary>
      public void Live( )
      {
            foreach ( EventHandlers eventHandlers in lice )
            {
                //this,"我是谁!"
                eventHandlers( );
            }
      }
    }
    public class message
    {
      private string name;
      public string Name
      {
            get
            {
                return name;
            }
            set
            {
                name = value.Trim( );
            }
      }
      private Person person;
      public message(Person person,string name )
      {
            this.person = person;
            this.name = name;
      }
      public void Message()
      {
            Console.WriteLine( "收到来自 {0} 的消息,男士们:{1}", person.state, name );
            Console.WriteLine( "收到来自 {0} 的消息,女士:{1}", person.state, name );
      }
    }
}
页: [1]
查看完整版本: 设计模式之观察者用委托的方式实现