Java Class与客户的理想职责

时间:2011-10-13 16:45:45

标签: java

我有一个类说Test.java,它包含一个名为errorCode的成员变量,它属于类ErrorCode,它只是一个int errorCode的包装器......我的问题是关于setter和getters,应该是什么他们理想的签名。 errorCode是一个int,所以setter就像是

class Test{
ErrorCode errorCode;
    public void setCode(int errorCode)
    { 
        this.errorCode = new ErrorCode(errorCode);
    }

   public int getCode()
    { 
       return this.errorCode.getCode();
    }
}

那么,类应该创建对象并让客户端传入一个int,或者客户端是否应该创建对象,而类只将它设置为成员变量,理想情况下我们应该支持客户端还是类?

2 个答案:

答案 0 :(得分:1)

我会说,如果可能的话,你应该进行设置,以便你的Test类不需要知道ErrorCode的内部是什么。现在它是一个int的包装器,但也许将来它需要是其他东西,或者你可能有多个ErrorCode的子类。

最好让Test接受并返回ErrorCode对象,让ErrorCode本身处理创建实例。您可能希望为ErrorCode提供一些静态工厂方法,例如

static ErrorCode createFromInt(int code) {
   return new ErrorCode(code);
}

答案 1 :(得分:0)

如果你希望你的类是一个合适的java bean,并且你有一个属性ErrorCode errorCode,那么约定就是有一个setter和一个getter形式的

public void setErrorCode(ErrorCode errorCode) {
    this.errorCode = errorCode;
}

public ErrorCode getErrorCode(){...}

如果您希望能够通过其基础int值设置错误代码,我会创建一个方法

public void setErrorCodeByValue(int code) {
...
}

并且您的代码执行类似操作以获取ErrorCode的代码值。

请注意,可以定义类似

的方法
public void setErrorCode(int code) {...}

除了上面显示的正确Java bean setter之外(如果需要,还有2个方法setErrorCode,具有不同的参数,类型为ErrorCode,类型为int)。 ..