using System;
namespace ObserverDemo
{
public delegate void RaiseEventHandler(
string hand);
public delegate void FallEventHandler();
public class A
{
public event RaiseEventHandler RaiseEvent;
public event FallEventHandler FallEvent;
public void Raise(
string hand)
{
Console.WriteLine("首领{0}手举杯", hand);
if (RaiseEvent !=
null)
{
RaiseEvent(hand);
}
}
public void Fall()
{
Console.WriteLine("首领A摔杯");
if (FallEvent !=
null)
{
FallEvent();
}
}
}
public class B
{
private A _a;
public B(A a)
{
_a =
a;
a.FallEvent +=
FallAttack;
a.RaiseEvent +=
RaiseAttack;
}
private void FallAttack()
{
Console.WriteLine("部下B发起攻击");
}
private void RaiseAttack(
string hand)
{
if (hand ==
"左")
{
Console.WriteLine("部下B发起攻击");
}
}
}
public class C
{
private readonly A _a;
public C(A a)
{
_a =
a;
_a.FallEvent +=
FallAttack;
_a.RaiseEvent +=
RaiseAttack;
}
private void FallAttack()
{
Console.WriteLine("部下C发起攻击");
}
private void RaiseAttack(
string hand)
{
if (hand ==
"右")
{
Console.WriteLine("部下C发起攻击");
}
}
}
internal static class Program
{
private static void Main(
string[] args)
{
var a =
new A();
var b =
new B(a);
var c =
new C(a);
//a.Raise("左");
//a.Raise("右");
a.Fall();
Console.ReadKey();
}
}
}
转载于:https://www.cnblogs.com/FangZhaohu/p/5070453.html
转载请注明原文地址: https://mac.8miu.com/read-14405.html