我有代码。
@startuml
interface DbReader{
{abstract} read()
}
interface DbWriter{
{abstract} write(obj)
}
class DbConcrete {
read()
write(obj)
}
DbConcrete .up.|> DbReader
DbConcrete .up.|> DbWriter
Reader ..> DbReader
Writer ..> DbWriter
@enduml
Reader 类使用 DbReader 接口,Writer 类使用 DbWriter 接口。
但是读写方法的具体实现是在同一个类DbConcrete中。
而且看起来接口是分开的。但是 Reader 对象变得如此依赖于 DbConcrete 类的实际对象。是的,这只取决于阅读界面。但是,无论谁编写 DbConcrete 类来改进/纠正 write() 方法,也必须注意 read() 方法。看来 ISP 与其说是在谈论接口,不如说是在谈论禁止对脂肪实体的依赖。
我的想法正确吗?上述实现是否违反了ISP原则?