观察者模式:消息的发布与订阅
2012-01-08 12:33
525 查看
namespace YOObserver
{
class Program
{
static void Main(string[] args)
{
ClassOver co = new ClassOver();//下课
Teacher teacher = new Teacher("李老师", co);
Student student = new Student("小明同学",co);
co.Notify += new EventHandler(teacher.GoToOffice);
co.Notify += new EventHandler(student.GoToMess);
co.BellState = "下课铃响了";
Console.WriteLine("下课铃响了\n");
co.SendMessage();//将消息发出
Console.ReadKey();
}
}
//声明一个委托
delegate void EventHandler();
/// <summary>
/// 通知者,消息中心;铃声接口
/// </summary>
interface IBell
{
//响铃状态
string BellState { get; set; }
void SendMessage();
}
/// <summary>
/// 下课铃声
/// </summary>
class ClassOver : IBell
{
public event EventHandler Notify;
private string Msg;
#region IBell 成员
public string BellState
{
get
{
return Msg;
}
set
{
Msg = value;
}
}
public void SendMessage()
{
Notify();
}
#endregion
}
/// <summary>
/// 放学铃声
/// </summary>
class SchoolOver : IBell
{
public event EventHandler Notify;
private string Msg;
#region IBell 成员
public string BellState
{
get
{
return Msg;
}
set
{
Msg = value;
}
}
public void SendMessage()
{
Notify();
}
#endregion
}
/// <summary>
/// 教师
/// </summary>
class Teacher
{
//消息接收者
private string name;
private IBell iBell;
public Teacher(string name, IBell iBell)
{
this.name = name;
this.iBell = iBell;
}
public void GoToOffice()
{
Console.WriteLine("{0} 收到 {1} 消息后,去办公室",name,iBell.BellState);
}
}
/// <summary>
/// 学生
/// </summary>
class Student
{
//消息接收者
private string name;
private IBell iBell;
public Student(string name, IBell iBell)
{
this.name = name;
this.iBell = iBell;
}
public void GoToMess()
{
Console.WriteLine("{0} 收到 {1} 消息后,去食堂",name,iBell.BellState);
}
}
}
{
class Program
{
static void Main(string[] args)
{
ClassOver co = new ClassOver();//下课
Teacher teacher = new Teacher("李老师", co);
Student student = new Student("小明同学",co);
co.Notify += new EventHandler(teacher.GoToOffice);
co.Notify += new EventHandler(student.GoToMess);
co.BellState = "下课铃响了";
Console.WriteLine("下课铃响了\n");
co.SendMessage();//将消息发出
Console.ReadKey();
}
}
//声明一个委托
delegate void EventHandler();
/// <summary>
/// 通知者,消息中心;铃声接口
/// </summary>
interface IBell
{
//响铃状态
string BellState { get; set; }
void SendMessage();
}
/// <summary>
/// 下课铃声
/// </summary>
class ClassOver : IBell
{
public event EventHandler Notify;
private string Msg;
#region IBell 成员
public string BellState
{
get
{
return Msg;
}
set
{
Msg = value;
}
}
public void SendMessage()
{
Notify();
}
#endregion
}
/// <summary>
/// 放学铃声
/// </summary>
class SchoolOver : IBell
{
public event EventHandler Notify;
private string Msg;
#region IBell 成员
public string BellState
{
get
{
return Msg;
}
set
{
Msg = value;
}
}
public void SendMessage()
{
Notify();
}
#endregion
}
/// <summary>
/// 教师
/// </summary>
class Teacher
{
//消息接收者
private string name;
private IBell iBell;
public Teacher(string name, IBell iBell)
{
this.name = name;
this.iBell = iBell;
}
public void GoToOffice()
{
Console.WriteLine("{0} 收到 {1} 消息后,去办公室",name,iBell.BellState);
}
}
/// <summary>
/// 学生
/// </summary>
class Student
{
//消息接收者
private string name;
private IBell iBell;
public Student(string name, IBell iBell)
{
this.name = name;
this.iBell = iBell;
}
public void GoToMess()
{
Console.WriteLine("{0} 收到 {1} 消息后,去食堂",name,iBell.BellState);
}
}
}
相关文章推荐
- 发布-订阅消息模式
- 观察者模式(订阅与发布模式),史上最简单的观察者和被观察者理解;
- 发布-订阅消息模式
- RabbitMQ消息分发模式----"Publish/Subscribe"发布/订阅模式
- RabbitMQ五种消息队列学习(四)--发布订阅模式
- Redis基础学习--Redis 事务(watch命令)、生存时间、排序、消息通知("发布/订阅"模式)、管道、节省空间
- 观察者模式(发布订阅模式)
- 观察者模式和发布订阅模式(下)
- 设计模式(三):观察者模式与发布/订阅模式区别
- JMS消息队列ActiveMQ(发布/订阅模式)
- RabbitMQ消息分发模式----"Publish/Subscribe"发布/订阅模式
- 消息队列-ActiveMQ学习笔记(三)-发布-订阅消息模式实现
- 观察者模式和发布/订阅模式的区别
- 设计模式--观察者模式(发布订阅模式)
- “一切都是消息”--MSF(消息服务框架)之【发布-订阅】模式
- 发布-订阅消息模式
- redis 消息队列 发布、订阅模式
- 观察者模式与发布/订阅模式区别
- 利用观察者模式(发布/订阅模式)制作一个“代替”广播的通知类
- ActiveMQ之发布- 订阅消息模式实现