public delegate void SubEventHandler();
2
public abstract class Subject
3
{
89
4
public event SubEventHandler SubEvent;
5
protected void FireAway()
6
{
7
if (this.SubEvent != null)
8
this.SubEvent();
9
}
10
}
11
public class Cat : Subject
12
{
13
public void Cry()
14
{
15
Console.WriteLine(cat cryed.);
16
this.FireAway();
17
}
18
}
19
public abstract class Observer
20
{
21
public Observer(Subject sub)
22
{
23
sub.SubEvent += new SubEventHandler(Response);
24
}
25
public abstract void Response();
26
}
27
public class Mouse : Observer
28
{
29
private string name;
30
public Mouse(string name, Subject sub) : base(sub)
31
{
32
this.name = name;
33
}
34
public override void Response()
35
{
36
Console.WriteLine(name + attempt to escape!);
37
}
38
}
39
public class Master : Observer
40
{
41
public Master(Subject sub) : base(sub){}
42
public override void Response()
43
{
90
44
Console.WriteLine(host waken);
45
}
46
}
47
class Class1
48
{
49
static void Main(string[] args)
50
{
51
Cat cat = new Cat();
52
Mouse mouse1 = new Mouse(mouse1, cat);
53
Mouse mouse2 = new Mouse(mouse2, cat);
54
Master master = new Master(cat);
55
cat.Cry();
56
}
57
}