设计模式之观察者用委托的方式实现
<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]