希赛考试网
首页 > 软考 > 软件设计师

观察者模式符合开闭原则吗为什么

希赛网 2024-06-06 12:44:08

观察者模式符合开闭原则吗?为什么?

开闭原则是面向对象设计的基本原则之一,它要求软件设计师应该尽量使系统的每个部分都对扩展开放,对修改关闭。而观察者模式是一种设计模式,它是一种松耦合的设计模式,用于对象之间的一对多通知依赖关系。那么,观察者模式是否符合开闭原则呢?从多个角度来分析。

首先,从开闭原则中“对修改关闭”这一点来看,观察者模式是符合的。当我们需要增加或者删除观察者时,只需要修改具体的观察者类即可,而不需要修改目标对象类的代码。这里的目标对象类即为被观察者,也称之为主题。该类封装了观察者注册、移除和通知的全部细节,使得在增加或删除具体观察者时不需要直接修改该类。因此,我们可以说,观察者模式是符合开闭原则的。

其次,从“对扩展开放”这一点来看,观察者模式同样是符合的。在观察者模式中,目标对象类不仅仅可以有一个观察者,还可以控制和通知多个观察者对象。当我们需要添加新的观察者时,只需要新增一个实现观察者接口的类,并在目标对象中注册即可,完全遵循了开闭原则中的“对扩展开放”原则。

但是,从另一种设计原则“单一职责原则”来看,观察者模式可能存在一些问题。该原则要求一个类只有一个职责,而在观察者模式中,目标对象除了职责之外,还负责管理所有的观察者对象,这可能会导致代码膨胀和臃肿。因此,一种常见的做法是将观察者管理的职责交给一个专门的类来实现,让目标对象只专注于通知观察者即可。

最后,从代码可重用性来看,观察者模式也是符合的。观察者模式中,具体的观察者实现可以被多个目标对象复用,而且在需求变更时,目标对象的代码不需要做出任何修改,只需要在观察者对象中添加相应的业务逻辑即可。这也就是观察者模式能够被广泛应用的原因之一。

综上所述,观察者模式确实符合开闭原则。它能够帮助我们有效地将观察者和被观察者解耦,同时保持系统的灵活性和可扩展性。

扫码咨询 领取资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件