结合项目实例 回顾传统设计模式(二)观察者模式

简介:

观察者模式现在用的不是很多 重点看下它的设计思想 OK 下面继续 消息中心的那点事

///   <summary>
    
///  数据中心
    
///   </summary>
     public  class MessageData
    {
        
         public  void messageSend()
        {
             string title = observer.getTitle();
             string content = observer.getContent();

             // 针对具体实现编程,会导致我们以后再增加或者删除消息平台时 必须要重新维护Platformlist 有时甚至还要重构代码
             foreach (Platform p  in observer.Platformlist)
            {
                p.update(title, content);
            }
        }
    }

上述情况在soa体系架构中凸显比较严重,基本上数据中心作为基站程序不适合版本经常更新

那么这和一对多得关系有何关联

利用观察者模式,数据中心是具体状态的对象,并且可以控制这些状态。也就是说,有“一个”具有状态的数据体。另一方面,观察者模式使用这些状态,虽然这些状态不属于他们。有许多的观察者,依赖主题来告诉他们状态合适改变了。这就产生了一个关系:“一个”数据中心对于“多个”消息发布者的关系。

松耦合的威力:当两个对象松耦合,他们依然可以交互,但是不清楚彼此的细节。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。

 

///   <summary>
    
///  数据中心
    
///   </summary>
     public  class MessageData : MessageDateIF
    {
         private ArrayList observers;
         private  string title;
         private  string content;

         public MessageData()
        {
            observers =  new ArrayList();
        }

         public  void RegisterPlatform(observerIF o)
        {
            observers.Add(o);
        }

         public  void RemovePlatform(observerIF o)
        {
             int i = observers.IndexOf(o);
             if (i >  0) { observers.Remove(i); }
        }

         public  void NotifyPlatform()
        {
             foreach (observerIF o  in observers)
            {
                o.update(title, content);
            }
        }
        
         public  void MessageChanged( string title, string content)
        {
             this.title = title;
             this.content = content;
            NotifyPlatform();
        }
    }

     public  interface observerIF
    {
         void update( string title,  string content);
       
    }
   
     public  interface MessageDateIF
    {
         void RegisterPlatform(observerIF o);
         void RemovePlatform(observerIF o);
         void NotifyPlatform();
    }

     public  interface DisplayElemnet
    {
         void Display();
    }

     public  class PlatformA : observerIF, DisplayElemnet
    {
         private  string title;
         private  string content;
         private MessageDateIF messagedata;

         public PlatformA(MessageDateIF messagedata)
        {
             this.messagedata = messagedata;
        }
         public  void update( string title,  string content)
        {
             this.title = title;
             this.content = content;
            Display();
        }
         public  void Display()
        {
            Console.WriteLine( " title: " + title +  "  content: " + content);
        }
    }

 

总结:为了对象之间的松耦合而设计。观察者模式定义了对象之间一对多依赖,这样一来,当一个对象改变状态时,它的所有一拦着都会收到通知并自动更新



本文转自 熬夜的虫子  51CTO博客,原文链接:http://blog.51cto.com/dubing/712404

相关文章
|
设计模式 监控 Java
Kotlin - 改良设计模式 - 观察者模式
Kotlin - 改良设计模式 - 观察者模式
204 3
|
5月前
|
设计模式 缓存 Java
Java设计模式(二):观察者模式与装饰器模式
本文深入讲解观察者模式与装饰器模式的核心概念及实现方式,涵盖从基础理论到实战应用的全面内容。观察者模式实现对象间松耦合通信,适用于事件通知机制;装饰器模式通过组合方式动态扩展对象功能,避免子类爆炸。文章通过Java示例展示两者在GUI、IO流、Web中间件等场景的应用,并提供常见陷阱与面试高频问题解析,助你写出灵活、可维护的代码。
|
3月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
355 8
|
设计模式 存储 供应链
前端必须掌握的设计模式——观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,实现了一种订阅机制。它包含两个角色:**观察者**(订阅消息、接收通知并执行操作)和**被观察者**(维护观察者列表、发送通知)。两者通过一对多的关系实现解耦,当被观察者状态改变时,会通知所有订阅的观察者。例如,商店老板作为被观察者,记录客户的需求并在商品到货时通知他们。前端应用中,如DOM事件注册、MutationObserver等也体现了这一模式。
|
设计模式 监控 Java
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
Kotlin教程笔记(52) - 改良设计模式 - 观察者模式
|
8月前
|
设计模式 消息中间件 存储
【设计模式】【行为型模式】观察者模式(Observer)
一、入门 什么是观察者模式? 观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。
401 9
|
设计模式 算法 数据库连接
PHP中的设计模式:提高代码的可维护性与扩展性本文旨在探讨PHP中常见的设计模式及其应用,帮助开发者编写出更加灵活、可维护和易于扩展的代码。通过深入浅出的解释和实例演示,我们将了解如何使用设计模式解决实际开发中的问题,并提升代码质量。
在软件开发过程中,设计模式是一套经过验证的解决方案模板,用于处理常见的软件设计问题。PHP作为流行的服务器端脚本语言,也有其特定的设计模式应用。本文将重点介绍几种PHP中常用的设计模式,包括单例模式、工厂模式和策略模式,并通过实际代码示例展示它们的具体用法。同时,我们还将讨论如何在实际项目中合理选择和应用这些设计模式,以提升代码的可维护性和扩展性。
243 4
|
设计模式 传感器
【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)
【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)
214 0
|
10月前
|
设计模式 消息中间件 存储
设计模式:观察者模式
观察者模式属于行为型设计模式,用于建立对象间的一对多依赖关系。当主题(Subject)状态变化时,所有依赖的观察者(Observer)会自动收到通知并更新。

热门文章

最新文章