栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中的构造方法重载-最佳实践

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的构造方法重载-最佳实践

虽然没有“官方指南”,但我遵循KISS和DRY的原则。使重载的构造函数尽可能简单,最简单的方法是只调用this(…)。这样,你只需要检查和处理一次参数即可。

public class Simple {    public Simple() {        this(null);    }    public Simple(Resource r) {        this(r, null);    }    public Simple(Resource r1, Resource r2) {        // Guard statements, initialize resources or throw exceptions if        // the resources are wrong        if (r1 == null) { r1 = new Resource();        }        if (r2 == null) { r2 = new Resource();        }        // do whatever with resources    }}

从单元测试的角度来看,测试类将变得很容易,因为你可以将资源放入其中。如果该类有很多资源(或某些OO-极客称之为协作者),请考虑以下两件事之一:

制作参数类

public class SimpleParams {    Resource r1;    Resource r2;    // Imagine there are setters and getters here but I'm too lazy     // to write it out. you can make it the parameter class     // "immutable" if you don't have setters and only set the     // resources through the SimpleParams constructor}

Simple中的构造函数只需要拆分SimpleParams参数:

public Simple(SimpleParams params) {    this(params.getR1(), params.getR2());}

…或做SimpleParams一个属性:

public Simple(Resource r1, Resource r2) {    this(new SimpleParams(r1, r2));}public Simple(SimpleParams params) {    this.params = params;}

Make a factory class

创建一个工厂类来为你初始化资源,如果初始化资源有点困难,这将是有利的:

public interface ResourceFactory {    public Resource createR1();    public Resource createR2();}

然后,以与参数类相同的方式完成构造函数:

public Simple(ResourceFactory factory) {    this(factory.createR1(), factory.createR2());} 

两者结合

是的…你可以根据当时更容易的方式将两种方式混合搭配。考虑到Simple使用相同方式的类,参数类和简单工厂类几乎是同一件事。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号