gpt4 book ai didi

java - java核心的Iterator违反单一职责原则

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:20 26 4
gpt4 key购买 nike

为什么 java.util.Iterator接口(interface)有方法 remove()

当然有时候这种方法是必要的,而且大家都已经习惯了它的存在。但实际上迭代器的主要和唯一目标只是提供访问容器元素。当有人想为此接口(interface)创建自己的实现,但由于任何原因不能或不想提供删除元素的能力时,他将被迫抛出 UnsupportedOperationException。抛出该异常通常表示架构没有经过深思熟虑或存在设计缺陷。

我真的不明白为什么会做出这样的决定。而且我猜它会更正确地分离一个特定的子接口(interface)来支持可选的方法:

diagram

为什么 remove()Iterator 的一部分的任何合理版本?这个例子是不是直接违反了单一职责原则来自SOLID

最佳答案

除了花哨的技术答案...请考虑时间线。 “单一责任原则”是罗伯特·马丁在 20 世纪 90 年代中期/后期的某个时候创造的。

Java 迭代器接口(interface)随 Java 1.2 一起出现;所以大约在 1998 年。

很有可能 Sun 的员工在开发 Java 的早期版本时从未听说过这个概念。

当然,许多聪明人在没有读过有关它的书的情况下也有相同的想法......所以一个好的设计师可能会在不知道“SRP”的情况下实现“SRP” - 但它也需要高度的意识揭露所有大大小小的违反这条规则的行为......

关于java - java核心的Iterator违反单一职责原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33160222/

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