接口隔离原则
客户端不应该依赖它不需要的接口,即一个类对应一个类的依赖应该建立在最小的接口上
方案一
接口
interface Interface1 {
void operation1 ( ) ;
void operation2 ( ) ;
void operation3 ( ) ;
void operation4 ( ) ;
void operation5 ( ) ;
}
实现类
class B implements Interface1 {
@Override
public void operation1 ( ) {
System. out. println ( "B 实现了 operation1" ) ;
}
@Override
public void operation2 ( ) {
System. out. println ( "B 实现了 operation2" ) ;
}
@Override
public void operation3 ( ) {
System. out. println ( "B 实现了 operation3" ) ;
}
@Override
public void operation4 ( ) {
System. out. println ( "B 实现了 operation4" ) ;
}
@Override
public void operation5 ( ) {
System. out. println ( "B 实现了 operation5" ) ;
}
}
class D implements Interface1 {
@Override
public void operation1 ( ) {
System. out. println ( "D 实现了 operation1" ) ;
}
@Override
public void operation2 ( ) {
System. out. println ( "D 实现了 operation2" ) ;
}
@Override
public void operation3 ( ) {
System. out. println ( "D 实现了 operation3" ) ;
}
@Override
public void operation4 ( ) {
System. out. println ( "D 实现了 operation4" ) ;
}
@Override
public void operation5 ( ) {
System. out. println ( "B 实现了 operation5" ) ;
}
}
类
class A {
public void depend1 ( Interface1 interface1) {
interface1. operation1 ( ) ;
}
public void depend2 ( Interface1 interface1) {
interface1. operation2 ( ) ;
}
public void depend3 ( Interface1 interface1) {
interface1. operation3 ( ) ;
}
}
class C {
public void depend1 ( Interface1 interface1) {
interface1. operation1 ( ) ;
}
public void depend4 ( Interface1 interface1) {
interface1. operation4 ( ) ;
}
public void depend5 ( Interface1 interface1) {
interface1. operation5 ( ) ;
}
}
方案二
接口
interface Interface1 {
void operation1 ( ) ;
}
interface Interface2 {
void operation2 ( ) ;
void operation3 ( ) ;
}
interface Interface3 {
void operation4 ( ) ;
void operation5 ( ) ;
}
实现类
class B implements Interface1 , Interface2 {
@Override
public void operation1 ( ) {
System. out. println ( "B 实现了 operation1" ) ;
}
@Override
public void operation2 ( ) {
System. out. println ( "B 实现了 operation2" ) ;
}
@Override
public void operation3 ( ) {
System. out. println ( "B 实现了 operation3" ) ;
}
}
class D implements Interface1 , Interface3 {
@Override
public void operation1 ( ) {
System. out. println ( "D 实现了 operation1" ) ;
}
@Override
public void operation4 ( ) {
System. out. println ( "D 实现了 operation4" ) ;
}
@Override
public void operation5 ( ) {
System. out. println ( "D 实现了 operation5" ) ;
}
}
类
class A {
public void depend1 ( Interface1 interface1) {
interface1. operation1 ( ) ;
}
public void depend2 ( Interface2 interface1) {
interface1. operation2 ( ) ;
}
public void depend3 ( Interface2 interface1) {
interface1. operation3 ( ) ;
}
}
class C {
public void depend1 ( Interface1 interface1) {
interface1. operation1 ( ) ;
}
public void depend4 ( Interface3 interface1) {
interface1. operation4 ( ) ;
}
public void depend5 ( Interface3 interface1) {
interface1. operation5 ( ) ;
}
}
启动
public class Segregation2 {
public static void main ( String[ ] args) {
A a = new A ( ) ;
a. depend1 ( new B ( ) ) ;
a. depend2 ( new B ( ) ) ;
a. depend3 ( new B ( ) ) ;
C c = new C ( ) ;
c. depend1 ( new D ( ) ) ;
c. depend4 ( new D ( ) ) ;
c. depend5 ( new D ( ) ) ;
}
}
结果