我有一个 Java 问题,但我看不出如何才能正确实现这些方法。我不太擅长建筑。
数据管理器接口(interface)类:
public interface DataManager {
public void readData();
public void writeData();
}
数据抽象类:
public abstract class Data implements DataManager {
@Override
public void readData() {};
@Override
public void writeData() {};
}
数据读取器类:
public class DataReader extends Data {
// I want to implement the readData() here
}
数据编写器类:
public class DataWriter extends Data {
// I want to implement the writeData() here
}
如果我想在只有一个接口(interface)的两个不同的类中分别实现 readData() 和 writeData() ,可以吗?我不知道我为什么要这样做。当我向 reader 或 writer 类添加更多方法时,它可能看起来更干净、更容易。我应该只在一个类中实现所有内容吗?
我希望这个库允许使用管理器对象的用户访问数据读写。但是对于实现,我不知道如何才能正确执行。
最佳答案
看来您无意中发现了“接口(interface)隔离原则”的原因。 https://en.wikipedia.org/wiki/Interface_segregation_principle
虽然 DataReader
和 DataWriter
乍一看似乎相关,但将它们分组到您的公共(public)接口(interface) DataManager
中似乎很有意义,阅读和写作的工作是完全不同的,并且保证分离成两个接口(interface),例如IReader
和 IWriter
。
假设您有一个同时需要读取器和写入器的类,那么您的 DataManager
接口(interface)就有意义了。但是,没有什么可以阻止您传递两个对象,一个是 IReader
类型,另一个是 IWriter
类型即使它们是同一类 .但是您似乎已经将它们分为DataReader
和DataWriter
,这很好。正如其他答案之一所暗示的那样,这是单一责任主体的应用。
关于Java使用一个接口(interface)在两个类中实现不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38838390/