gpt4 book ai didi

design-patterns - 观察者模式是否违反单一职责原则?

转载 作者:行者123 更新时间:2023-12-04 13:48:57 26 4
gpt4 key购买 nike

如果使用观察者设计模式的应用程序具有 subject具有以下职责的类:

1) 管理和通知观察者(即提供注册和取消注册功能并调用所有观察者的通知功能)和

2)它的原始职责(即类在它是 subject 之前所做的一切)。

这个类是否违反了单一职责原则?它显然有多个责任,但阅读 SRP 我很困惑“更改原因”是在设计时还是运行时进行的这种更改?

最佳答案

不,Observer设计模式不违反Single Responsibility Principle (SRP) .

什么是责任?

"A responsibility denotes the obligation of an object to provide a certain behavior."
[Object-Oriented Analysis and Design, Grady Booch [et al.], page 600]



但 SRP 以不同的方式定义了责任,作为改变的理由。
SRP 规定一个类应该只有一个职责
(改变的原因)。

这对应于 GoF 原则
封装变化的东西 - 许多 GoF 设计模式的主题。
比如Strategy模式封装了一个算法
(可以更改)在单独的 Strategy 类中。

观察者模式不是要封装变化的东西。
它描述了一种在不使对象紧密耦合的情况下定义交互对象之间的一对多依赖关系的方法。

如需进一步讨论,请参阅 GoF Design Patterns Memory for learning
面向对象的设计与编程
http://w3sdesign.com .

关于design-patterns - 观察者模式是否违反单一职责原则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28281853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com