接口(猫,鼠,人联动事类) 观察者模式
2008-10-24 11:56
204 查看
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace Observer
{
public interface Observer
{
void Response(); //观察者的响应,如是老鼠见到猫的反映
}
public interface Subject
{
void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape! ");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine( "Host waken! ");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine( "Cat cryed! ");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
/**//// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse = new Mouse( "mouse ", cat);
Master master = new Master(cat);
cat.Cry();
}
}
}
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace Observer
{
public interface Observer
{
void Response(); //观察者的响应,如是老鼠见到猫的反映
}
public interface Subject
{
void AimAt(Observer obs); //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
}
public class Mouse : Observer
{
private string name;
public Mouse(string name, Subject subj)
{
this.name = name;
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine(name + " attempt to escape! ");
}
}
public class Master : Observer
{
public Master(Subject subj)
{
subj.AimAt(this);
}
public void Response()
{
Console.WriteLine( "Host waken! ");
}
}
public class Cat : Subject
{
private ArrayList observers;
public Cat()
{
this.observers = new ArrayList();
}
public void AimAt(Observer obs)
{
this.observers.Add(obs);
}
public void Cry()
{
Console.WriteLine( "Cat cryed! ");
foreach (Observer obs in this.observers)
{
obs.Response();
}
}
}
class MainClass
{
/**//// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse = new Mouse( "mouse ", cat);
Master master = new Master(cat);
cat.Cry();
}
}
}
相关文章推荐
- Observer接口实现观察者模式
- 对象间的联动——观察者模式(六)
- 对象间的联动——观察者模式(二)
- 从工程角度看C++观察者模式中的接口是否需要提供默认的实现
- 对象间的联动——观察者模式(五)
- 接口回调,观察者模式,消息机制3者的区别
- Rxjava前篇(一):观察者模式之接口回调
- Php-SPL库中的观察者模式接口详解
- Java常用类库--观察者设计模式( Observable类Observer接口)
- 观察者设计模式( Observable类Observer接口)
- 对象间的联动——观察者模式(二)
- 观察者设计模式-Observable类和Observer接口
- 观察者模式接口传值
- 一个接口形式的观察者模式
- Java常用类库--观察者设计模式( Observable类Observer接口)
- Java中使用Observer接口和Observable类实践Observer观察者模式
- JavaSE第八十四讲:Observable类与Observer接口详解,深入理解观察者模式
- 对象间的联动——观察者模式
- Java常用类库——观察者设计模式(Observer接口、Observable类)
- winform程序三个窗体间同步数据(五):接口实现多态减少代码(观察者模式)