remove()
のインタフェースを持つjava.util.Iterator
のインタフェースはなぜですか?JavaコアのIteratorにおける単一責任の原則の違反
確かにこの方法が必要であり、すべてがその存在に慣れてきたことがあります。しかし実際、イテレータの主目的は、アクセスコンテナ要素を提供することだけです。そして、誰かがこのインタフェース用に独自の実装を作成したい場合、要素を削除する機能を提供することができない、またはしたくない場合は、UnsupportedOperationException
を強制的にスローします。そして、その例外を投げることは、通常、あまりよく考えられていないアーキテクチャや設計上のいくつかの欠陥を示しています。
本当に私はそのような決定の理由を理解していません。そして、私はそれがより正確に任意の方法をサポートするための特定のサブインターフェイスを分離されるだろうと思います。
remove()
がIterator
の一部である理由の任意の推論のバージョン? SOLID
からの単一責任原則の直接違反のこの例ではありませんか?
実際に、ここで提案する「削除セマンティクスのないイテレータ」は、従来の['Enumeration'](http://docs.oracle.com/javase/8/docs/api/java/util/ Enumeration.html)インターフェースで、Java 1.2の 'Iterator'に置き換えられました。 –
「新しいタイプの基礎となるコレクションが導入されました」以外の変化のベクトルは何ですか? SRPを「変更する理由が多すぎる」のではなく「あまりにも多くのことをやっている」と考えると、プログラムのすべてのメソッドに独自のインターフェイスが設定されている、狂った通常のフォームが実行されます。 – Affe