StringTokenizer.java
私はクラスを調べていて、頭に浮かんだいくつかの質問がありました。
他のクラスで使用されるパブリックメソッドが、すべての作業を実行するプライベートメソッドを呼び出すことに気づきました。さて、OODの原則の1つは、できる限り多くのことを非公開にし、実装の詳細をすべて隠すことであることを私は知っています。しかし、この背後にある論理を完全に理解しているのかどうかはわかりません。
無効な値がフィールドに格納されないように、フィールドをプライベートにすることが重要であることを理解しています(多くの理由の1つにすぎません)。ただし、プライベートメソッドに関しては、なぜそれらが重要なのかわかりません。
たとえば、StringTokenizer
クラスの場合、すべての実装コードをパブリックメソッド内に配置するだけでは不十分でしょうか。これらのメソッドのAPI(つまり、これらのパブリックメソッドを呼び出すルール)は同じままであるため、これらのメソッドを使用するクラスにどのような違いがありますか?プライベートメソッドが役立つ理由を私が考えることができる唯一の理由は、重複したコードを書くのを助けるからです。たとえば、すべてのパブリックメソッドが同じことを行った場合、このタスクを実行し、パブリックメソッドで使用できるプライベートメソッドを宣言できます。
他の質問、パブリックメソッドではなくプライベートメソッドで実装を書くことの利点は何ですか?
ここに小さな例があります:
public class Sum{
private int sum(int a, int b){
return a+b;
}
public int getSum(int a, int b){
return sum(a,b);
}
}
対...
public class Sum{
public int getSum(int a, int b){
return a+b;
}
}
最初のサンプルはどのように有益ですか?