public void Test1() { var subject = new Subject(); var firstObserver = new FirstObserver(); var secondObserver = new SecondObserver(); firstObserver.Subscribe(subject); secondObserver.Subscribe(subject); subject.Notify("Something happened"); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); ISubject subject = new Subject(); IObserver observer1 = new FirstObserver(subject); IObserver observer2 = new SecondObserver(subject); subject.AddObserver(observer1); subject.AddObserver(observer2); subject.HaveSomeTechLogic(); subject.RemoveObserver(observer1); subject.HaveSomeTechLogic(); }
/// <summary> /// 解析cron表达式 /// </summary> /// <param name="cron">cron表达式字符串</param> /// <returns></returns> public static CronExpression ResolveCron(string cron) { CronResolve resolve = new CronResolve(new CronExpression());// cron解析器 // 注册解析成员 SecondObserver secondObserver = new SecondObserver(resolve); // 秒 MinuteObserver minuteObserver = new MinuteObserver(resolve); // 分 HourObserver hourObserver = new HourObserver(resolve); // 小时 DayObserver dayObserver = new DayObserver(resolve); // 天 MonthObserver monthObserver = new MonthObserver(resolve); // 月 DayOfWeekObserver dayOfWeekObserver = new DayOfWeekObserver(resolve); // 星期 YearObserver yearObserver = new YearObserver(resolve); // 年 return(resolve.Resolve(cron)); // 解析 }
public override void Run() { var someObservable = new SomeObservable(); var firstObserver = new FirstObserver(); var secondObserver = new SecondObserver(); someObservable.DoSomeAction(800); Console.WriteLine("Add FirstObserver"); _firstCancelation = someObservable.Subscribe(firstObserver); Console.WriteLine("Add SecondObserver"); someObservable.Subscribe(secondObserver); Console.WriteLine("Do some action in Observable twice"); someObservable.DoSomeAction(100); someObservable.DoSomeAction(200); Console.WriteLine("Unsubscribe FirstObserver and Do some action in Observable"); _firstCancelation.Dispose(); someObservable.DoSomeAction(300); Console.WriteLine("Cancel notify"); someObservable.StopNotify(); }