zoukankan      html  css  js  c++  java
  • 观察者模式

    (观察者封装了观察者和观察方法这两个变化点,重要的还是观察方法。)

    个人理解

    针对软件构建过程中,某些对象存在的“通知依赖关系”(如果目标对象的状态发生改变将通知所有的依赖对象)。我们可以利用抽象类或者接口在消息发出对象中建立通知耦合关系,也可以通过事件与委托在被通知对象中建立通知这种藕和关系。
    效果及实现要点
     1.使用面向对象的抽象,Observer模式使得我们可以独立地改变目标与观察者,从而使二者之间的依赖关系达到松耦合。
     2.目标发送通知时,无需指定观察者,通知(可以携带通知信息作为参数)会自动传播。观察者自己决定是否需要订阅通知。目标对象对此一无所知。
     3.在C#中的Event。委托充当了抽象的Observer接口,而提供事件的对象充当了目标对象,委托是比抽象Observer接口更为松耦合的设计。
     适用性
     1.当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。 
    2.当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。 
    3.当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象是紧密耦合的。
     总结
     通过Observer模式,把一对多对象之间的通知依赖关系的变得更为松散,大大地提高了程序的可维护性和可扩展
    实例代码
        public class Observer
        
    {
            
    (一般情况下该模式的实现)

            
    (以下利用委托和事件来实现该模式)
        }

    调用
            static void Main(string[] args)
            
    {
                


                


                Console.ReadLine();
            }
  • 相关阅读:
    CF763C Timofey and Remoduling
    CF762E Radio Stations
    CF762D Maximum Path
    CF763B Timofey and Rectangles
    URAL1696 Salary for Robots
    uva10884 Persephone
    LA4273 Post Offices
    SCU3037 Painting the Balls
    poj3375 Network Connection
    Golang zip压缩文件读写操作
  • 原文地址:https://www.cnblogs.com/tommyli/p/1029236.html
Copyright © 2011-2022 走看看