有几个主题与此类似,但我找不到一个足够的答案
我想知道在Java构造函数中重载的最佳实践是什么。关于这个问题我已经有了自己的想法,但我想听听更多的建议
我指的是简单类中的构造函数重载和继承已经重载的类时的构造函数重载(意味着基类具有重载构造函数)
谢谢:)
虽然没有“官方指南”,但我遵循的原则是亲吻和干燥。使重载构造函数尽可能简单,最简单的方法是它们只调用这个(…)。这样,您只需检查和处理参数一次,而且只需一次
公共类简单{
公共简单(){
这个(空);
}
公共简单资源(资源r){
这个(r,null);
}
公共简单(资源r1、资源r2){
//保护语句,初始化资源或抛出异常,如果
//资源是错误的
if(r1==null){
r1=新资源();
}
if(r2==null){
r2=新资源();
}
//利用资源做任何事
}
}
从单元测试的角度来看,测试类将变得很容易,因为您可以将资源放入其中。如果该类有许多资源(或一些OO怪人称之为合作者),请考虑以下两个问题之一:
创建一个参数类
公共类SimpleParams{
资源r1;
资源r2;
//想象一下这里有二传手和传接手,但我太懒了
//把它写出来。你可以把它变成参数类
//“不可变”如果您没有setter,只设置
//通过SimpleParams构造函数提供的资源
}
Simple中的构造函数只需拆分SimpleParams参数:
公共简单(SimpleParams){
这个(params.getR1(),params.getR2());
}
…或使SimpleParams成为一个属性:
公共简单(资源r1、资源r2){
这个(新的SimpleParams(r1,r2));
}
公共简单(SimpleParams){
this.params=params;
}
制造工厂级
为您创建一个初始化资源的factory类,如果初始化资源有点困难,这是很有好处的:
公共接口资源工厂{
公共资源createR1();
公共资源createR2();
}
然后以与参数类相同的方式完成构造函数:
公共简单(ResourceFactory){
这个(factory.createR1(),factory.createR2());
}
两者兼而有之
嗯。。。你可以混合和匹配这两种方式,这取决于当时对你来说什么更容易。考虑到simple类的使用方式相同,参数类和简单工厂类几乎是一样的