示例#1
0
        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();
        }
示例#3
0
        /// <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();
        }