`
javatar
  • 浏览: 1704696 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

[提问]观察者模式“感兴趣”的粒度控制

阅读更多
今天在写一个桌面程序,显示时用到了观察者模式
观察者模式中,Observer向Subject注册感兴趣的事件,
其中对“感兴趣”的粒度控制,
如果Subject有多个事件,不同的Observer对不同的事件感兴趣,也可能重叠
1.在Subject中保持多个Observer聚集,每个聚集表示对某一事件感兴趣,
将Observer注册到各个聚集,
这样的话。如果同一Observer对两个事件感兴趣,就要注册两次,
而且聚集的管理也较麻烦addObserver,removeObserver要写几个
2.将所有事件方法都纳入同一Observer接口,
Subject只维护一个Observer聚集,
具体Observer实现接口时,对不感兴趣的事件函数留空。
这样的话,如果有很多事件,每个Observer可能只对一个感兴趣,
却要实现一个这么大的接口,也不合最少知道原则,
Java中的AWT事件就是这样做的,如WindowListener等
3.同2一样只Subject只维护一个Observer聚集,
而且Observer接口只有一个方法,具体事件类型用一个状态位传参表示,
这样的话,事件函数表意不清,传参也必需保证所有事件一样,丧失灵活性,
或用Object弱类型传参,在具体Observer还要用instanceof判断,
加上事件类型状态位的判断,会出现很多if else,丧失多态性。
eclipse的SWT就是用的这样做的。
它们的优劣,难以取舍,请各位给点建议。
thanks!
分享到:
评论
2 楼 javatar 2006-12-13  
谢谢你的答复,看来分开是要清晰点。
thanks!

补充:
已这么用了,发现这样易于实现推模式。
但聚集管理待抽象。
1 楼 taowen 2006-12-12  
个人感觉第一种是更好的设计。不相关方法放在同一个接口中,我看来就是一种偷懒的行为。接口和高阶函数(我把单方法的接口,看作高阶函数了)的差别,应该就是在于接口中的方法是概念上一体的,无法独立存在。如果接口中的方法不互相依赖,我觉得分开来一个个地做接口,对于设计意图的体现更明晰一些。

相关推荐

    设计模式之观察者模式

    **观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它允许对象在状态改变时通知其他对象,这些对象通常被称为“观察者”。这种模式遵循“发布-订阅”原则,即对象之间通过订阅关系建立联系,当被...

    KVO观察者模式

    **观察者模式(Observer Pattern)**,又称为发布-订阅(Publish/Subscribe)模式,是软件设计模式中的一种行为模式。在iOS开发中,Key-Value Observing (KVO) 是苹果实现观察者模式的一种机制,它允许一个对象监听...

    基于RBAC模型的细粒度权限控制

    这种设计使得权限控制更加细致,可以实现细粒度的访问控制,同时保持系统的扩展性和灵活性。 PDES平台的RBAC系统遵循了上述原则,为每个功能模块定义了资源和操作,用户通过被指派的角色来执行操作。这样的设计不仅...

    大数据环境下细粒度的访问控制与审计管理.pdf

    在大数据环境下,细粒度的访问控制与审计管理是确保信息安全和工控安全的重要组成部分。随着数据采集技术的发展,组织和个人产生的数据量呈现爆炸性增长,这为业务运营提供了巨大价值,同时也带来了前所未有的安全...

    Oracle中细粒度访问控制的工作方式

    细粒度访问控制也就是虚拟专用数据库 (VPD) ,它提供强大的行级安全功能。它是在 Oracle8i 中推出的,已经受到广泛的欢迎,并且在从教育软件到金融服务等各种应用程序得到采用。VPD 的工作方法是,通过透明地更改对...

    详解Android观察者模式的使用与优劣

    3. **粒度控制**:尽可能将事件细化,让观察者只关心与自己相关的状态改变。 4. **异步处理**:对于耗时的操作,可以在通知观察者后使用异步任务来执行。 综上所述,理解并掌握观察者模式对于提升Android开发效率和...

    设计模式与小粒度架构设计

    在小粒度架构设计中,设计模式的运用有助于规范化模块和类之间的关系,提高代码的可读性和可维护性。设计模式的正确使用可以减少系统的复杂性,使得代码更易于理解和修改,同时也增加了软件系统的灵活性和可扩展性。...

    岩石粒度分析教程

    4. **沉降法**:基于斯托克斯定律,通过观察颗粒在液体中的沉降速度来确定其粒度分布。 #### 四、岩石粒度分析在沉积学中的意义 1. **沉积相分析**:通过岩石粒度分析可以识别出不同沉积相的特点,进而推断古地理...

    电力物联网场景下基于零信任的分布式数据库细粒度访问控制.zip

    基于零信任的分布式数据库细粒度访问控制模型为解决这些问题提供了新的思路。本文将深入探讨这一主题,详细阐述相关知识点。 首先,我们要理解“电力物联网”(Electricity Internet of Things,EIoT)。电力物联网...

    电力物联网场景下基于零信任的分布式数据库细粒度访问控制.pdf

    例如,在电力物联网中,通过细粒度访问控制,可以限制操作人员只能查看与自己工作直接相关的电网操作数据或客户信息,而非整个数据库,这种访问控制方式大大提高了数据安全的级别,保障了关键信息的安全。...

    细粒度位置追踪

    在FINE框架中,使用了密文策略匿名属性基础加密(CP-ABE)技术,以实现对位置信息的细粒度控制和隐私保护。这种方法不仅隐藏了用户的位置,也保护了位置服务数据(LBS)及其访问策略,避免了对任何可信第三方的依赖...

    微服务架构服务拆分粒度

    微服务架构是现代软件开发中的一种重要模式,它提倡将单一的应用程序拆分...通常,平衡点在于找到既能保持服务独立性又能控制复杂性的粒度。这可能意味着在实践中,不同的业务场景可能需要采用不同粒度的服务拆分策略。

    ChatGPT技术的细粒度对话控制与主题变化.docx

    ChatGPT 技术的细粒度对话控制与主题变化 ChatGPT 技术是一种基于 Transformer 架构的自然语言处理模型,它能够生成具有上下文连贯性和语义准确性的对话文本。然而,在处理主题变化和细粒度对话控制方面仍然存在...

    现代沉积物粒度分析

    现代沉积物粒度分析是地质学、海洋学、环境科学等领域研究沉积物特性的重要技术之一。粒度分析的主要目的是通过对沉积物粒径的测量来了解沉积物的物理特性,进而推断其形成环境、搬运过程和沉积历史。随着科学技术的...

    粒度计算研究综述粒度计算研究综述

    标题与描述均提到了“粒度计算研究综述”,这表明文章主要聚焦于对粒度计算领域的全面回顾与深入分析。粒度计算是信息技术领域的一个重要分支,它涉及到数据、信息或知识在不同层次上的细化或聚合处理。下面将详细...

Global site tag (gtag.js) - Google Analytics