Java继承,使用构建器模式

前端之家收集整理的这篇文章主要介绍了Java继承,使用构建器模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
各位晚上好,

我有3个班:

>错误
> ShellError
> WebError

哪里

ShellError extends Error

WebError extends Error

在ShellError中有一些字段是可选的,其他字段是必需的.我以下列方式构建对象:

shellError = new ShellError.Builder().setFile(filePattern)
.setHost(host).setPath(path).setSource(file.isSource())
.setJobName(p.getJobName()).build();

由于ShellError扩展了错误,我进一步说:

shellError.setDescription(msg.toString());
shellError.setExceptionClass("MyEvilException");
shellError.setExceptionMessage("Some clever error message");
shellError.setStacktrace(stack);

那么为什么要打造Builder?我喜欢我的build()等等方便地验证所有字段设置正确的事实

我会喜欢它,如果我可以..构建()ShellError并添加它从错误类的字段.

我做了什么工作

>问题是:

有没有更好的方法,还是有意义我做了什么?

– 编辑

我更新了Builder()来接受以前的Error类中的一些参数.我现在有

shellError = new ShellError.Builder(exception,"Some description").setFile(filePattern).setHost(host)
.setPath(path).setSource(file.isSource()).
setJobName(p.getJobName()).build();

你说什么?更好?更差?

解决方法

根据您参考的功能,这显然不是标准的 java.lang.Error课程.通常构建器用于允许容易地构造不可变对象,或者在存在大量配置/构造参数的情况下提供类似于“命名参数”的功能.

对于这种特殊情况,如果Error类在构造之后是不可变的,并且这些附加的setter函数是在构建器而不是错误类上的话,这将是更明智的.我不知道你对这些类有多少控制权,但如果可以修改它们,我建议先让构建器支持相同的设置器,这样可以在构建器上进行所有配置.那么,如果这样做是可行的,你可以尝试删除这些setter方法,而不是从构造函数中配置这些方法.如果您没有任何控制权,您可以扩展构建器类,另一个支持这些附加方法.

你做的是有道理的似乎构建器和错误类的设计不一定会有很大的意义,迫使您编写感觉不合适或不一致的代码.

原文链接:https://www.f2er.com/java/126789.html

猜你在找的Java相关文章