.net ??У????????????ɡ????塱[??]
???????????? ???????[ 2013/6/18 9:45:00 ] ????????
????????2??“???????????÷????????”
????????????????????????“???????”?????????????????“??”??“????”???????????????д????“???????”?е?С??????????????????????????????????÷??????????
????[?????????"??????"???????]
/// <summary>
/// ?????з???????????
/// </summary>
public class DelegateSubject
{
//??ж???
public delegate void NotifyEventHandler(string msg);
//?????????????????????????????
public NotifyEventHandler NotifyObservers = null;
//???????????????
public string SubjectName { get; set; }
//?????????
public string Message { get; set; }
//????????
public DelegateSubject(string subjectName)
{
SubjectName = subjectName;
}
//?????з??????????ù?????????????????
public void Notify()
{
NotifyEventHandler tempNotifyHander = NotifyObservers;
if (tempNotifyHander != null)
{
?????????????????? //???????????÷????????????
tempNotifyHander(Message);
}
}
}
????[?????????"???????"???????]
/// <summary>
/// ????????
/// </summary>
public class ConcreteObserver : IObserver
{
//?????????????У?????
public string ObserverName { get; set; }
//???????????????
string[] weather = { "????"?? "????"??"????" };
//???????????
public ConcreteObserver(string observerName)
{
ObserverName = observerName;
}
//?????????????????
public void NewMessage(string msg)
{
if (weather.Contains(msg)) //???????????????
{
Console.WriteLine(ObserverName + "???????:" + msg);
Thread.Sleep(2000);
Console.WriteLine(ObserverName + "???????????????2s");
}
else //???????????...
{
Console.WriteLine(ObserverName + "???????:" + msg);
Console.WriteLine(ObserverName + "????????????????????????????????...");
throw new Exception(ObserverName + "??????" + msg + "????????");
}
}
}
????[??????????]
private static void TestDelegateObserverPattern()
{
try
{
DelegateSubject subject_Weather = new DelegateSubject("????");
IObserver observer_School = new ConcreteObserver("?У");
IObserver observer_Company = new ConcreteObserver("???");
subject_Weather.NotifyObservers += observer_School.NewMessage;
subject_Weather.NotifyObservers += observer_Company.NewMessage;
subject_Weather.Message = "????";
subject_Weather.Notify();
Console.WriteLine();
subject_Weather.Message = "??";
subject_Weather.Notify();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11