Observer 在对象之间定义一个一对多的依赖关系,从而当一个对象状态发生改变时,所有依赖于这个对象的对象都能够得到通知,并对上述改变做出反应....

it2022-05-09  27

Interesting  1    public class Interesting 2    { 3        public ChangeHandler _change; 4        public void Wiggle()//事件引起变化 5        { 6            if (_change != null) 7            { 8                _change(); 9            }10        }11    } Curious  1    public class Curious 2    { 3        public Curious(Interesting i) 4        { 5            i._change += new ChangeHandler(React); 6        } 7        public void React() 8        { 9            HttpContext.Current.Response.Write( "Curious did something!" ); 10        }11    } delegate 1    public delegate void ChangeHandler();2 注册及引发事件 1        //observer2        Gof.Nan.Test.Interesting i = new Gof.Nan.Test.Interesting();3        Gof.Nan.Test.Curious c = new Gof.Nan.Test.Curious(i);4        i.Wiggle(); 上面的例子我们用委托来声明一个回调,这样很不安全任何一个可以访问Interesting类的_change的类都可以调用这个委托.可以直接调用i._change();试下,我们可以用Event关键字来加强这种限制. 用事件来限制委托调用  1public class Interesting 2{ 3    public event ChangeHandler _change; 4    public void Wiggle()//事件引起变化  5    { 6        if (_change != null) 7        { 8            _change(); 9        }10    }11} 这时我们在用i._change();调用系统就会提示事件只能出现在+=或-=的左边. Gui中的观察者模式 没时间了,有时间在学习了. The Observer Pattern defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically. Design Principles: Strive for loosely coupled designs between objects that interact.

转载于:https://www.cnblogs.com/nanshouyong326/archive/2006/12/31/608594.html


最新回复(0)