为了账号安全,请及时绑定邮箱和手机立即绑定

用Java管理带有许多参数的构造函数

用Java管理带有许多参数的构造函数

噜噜哒 2019-11-21 11:14:11
在我们的某些项目中,有一个类层次结构,它随着链的向下添加更多的参数。在底部,某些类最多可以具有30个参数,其中28个正被传递给超级构造函数。我会承认通过Guice之类的工具使用自动DI会很好,但是由于某些技术原因,这些特定项目仅限于Java。按类型按字母顺序组织参数的约定无效,因为如果重构类型(您为参数2传入的Circle现在是Shape),它可能会突然混乱。这个问题可能是针对特定问题的,并且充满了“如果这是您的问题,那么您在设计级别上做错了”的批评,但是我只是在寻找任何观点。
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

生成器设计模式可能会有所帮助。考虑以下示例


public class StudentBuilder

{

    private String _name;

    private int _age = 14;      // this has a default

    private String _motto = ""; // most students don't have one


    public StudentBuilder() { }


    public Student buildStudent()

    {

        return new Student(_name, _age, _motto);

    }


    public StudentBuilder name(String _name)

    {

        this._name = _name;

        return this;

    }


    public StudentBuilder age(int _age)

    {

        this._age = _age;

        return this;

    }


    public StudentBuilder motto(String _motto)

    {

        this._motto = _motto;

        return this;

    }

}

这让我们编写如下代码


Student s1 = new StudentBuilder().name("Eli").buildStudent();

Student s2 = new StudentBuilder()

                 .name("Spicoli")

                 .age(16)

                 .motto("Aloha, Mr Hand")

                 .buildStudent();

如果我们忽略了必填字段(可能是必填名称),则可以让Student构造函数引发异常。而且它使我们可以使用默认/可选参数,而无需跟踪任何类型的参数顺序,因为这些调用的任何顺序都可以很好地工作。


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 393 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信