【发布时间】:2011-12-06 15:16:13
【问题描述】:
我正在检查StringTokenizer.java 课程,我想到了一些问题。
我注意到其他类将使用的公共方法调用了一些完成所有工作的私有方法。现在,我知道 OOD 的原则之一是尽可能多地私有化并隐藏所有实现细节。我不确定我是否完全理解这背后的逻辑。
我了解将字段设为私有以防止在其中存储无效值非常重要(这只是众多原因之一)。但是,当涉及到私有方法时,我不确定它们为什么如此重要。
例如,在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;
}
}
第一个样本如何更有益?
【问题讨论】:
标签: java encapsulation stringtokenizer private-methods public-method