gpt4 book ai didi

java - 像setter这样简单的东西,用接口(interface)好还是抽象类好?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:06 27 4
gpt4 key购买 nike

我有几个类,其中有我想要强制执行的公共(public) setter 方法。

我可以使用抽象 类显式定义 setter,然后扩展该类,或者我可以实现一个接口(interface)。但是如果使用interface,我将不得不一遍又一遍地编写 setter 方法,这似乎违反了 DRY 原则。

public abstract class AbstractParent {
int value;
protected void setValue(int value) {
this.value = value;
}
}

对比

public interface MyInterface {
void setValue(int value);
}

什么时候使用哪种方法有意义?

最佳答案

最抽象(“最好”)的方法是两者一起使用:

// The contract
public interface MyInterface {
void setValue(int value);
}

// A convenient implementation from which to base a concrete implementation
public abstract class AbstractParent implements MyInterface {
int value;
void setValue(int value) {
this.value = value;
}
}

您可以在整个 JDK 中看到这种模式的实际应用,例如:

interface Map {...

abstract class AbstractMap implements Map {...

class HashMap extends AbstractMap {...

此模式允许编码人员提供他们自己的遵守契约的类,这在单元测试使用这些对象的代码时尤为重要,因为模拟接口(interface)比模拟类容易得多,它可能是最终的,具有私有(private)构造函数或其他不方便的功能。

关于java - 像setter这样简单的东西,用接口(interface)好还是抽象类好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40116936/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com