界面隔离原则只是单一责任原则的替代吗?
我认为,如果我的类满足SRP,则无需提取多个接口.
所以ISP看起来像解决方案,以防我们因某些原因打破SRP.
我对吗 ?
design-patterns single-responsibility-principle solid-principles interface-segregation-principle
根据接口隔离原则
不应该强迫客户端实现不需要的接口方法
...因此我们应该定义接口以进行逻辑分离。
但是defaultJava 8 中引入的方法提供了在 Java 接口中实现方法的灵活性。似乎 Java 8 提供了增强接口的可行性,使其具有一些与其核心逻辑无关的方法,但具有一些默认或空的实现。
它不违反ISP吗?
java solid-principles default-method interface-segregation-principle
我最近在看书,第一次Java Concurrency in Practice接触到这个方法。Collections.unmodifiableMap(...)该方法围绕现有的创建一个只读包装器Map,任何修改返回值的尝试Map(根据Javadocs)都会导致UnsupportedOperationException抛出异常。其他集合类也存在类似的方法。
这让我非常担心,因为 anunmodifiableMap()仍然返回 a Map,但不支持所有相关方法。事实上,它还会在写入操作上引发异常,这意味着它无法Map在大多数应用程序中替代“正确的”异常。
我是一名学生,对自己识别设计缺陷的能力还没有信心,但是这些不是分别违反了Interface segregation和Liskov substitution原则吗?