-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
接口隔离原则
什么是接口隔离原则?就是避免出现一些太臃肿的接口。粗粒度的接口无法拆分,但是细粒度的接口可以组合。
比如下面这个例子:
interface IAnimal{
void eat();
void fly();
void swim();
}我们定义了这样的接口,然后现在我们想实现一个Fish类,我们只能这样写:
class Fish implements IAnimal{
@Override
public void eat() {
}
@Override
public void fly() {
}
@Override
public void swim() {
}
}但是这样的缺陷非常明显,Fish可以swim,但是不能fly。我们不得不留下一个空接口。
所以我们可以这把上面的接口拆分一下:
interface ICanEatAnimal{
void eat();
}
interface ICanFlyAnimal{
void fly();
}
interface ICanSwimAnimal{
void swim();
}
class Fish implements ICanEatAnimal, ICanSwimAnimal{
@Override
public void eat() {
}
@Override
public void swim() {
}
}这样似乎不错,但是上面的接口拆封的过细了。没有那个动物可以不eat,所以上面的接口可以组合一下:
interface IAnimal{
void eat();
}
interface ICanFlyAnimal extends IAnimal{
void fly();
}
interface ICanSwimAnimal extends IAnimal{
void swim();
}
class Fish implements ICanSwimAnimal{
@Override
public void eat() {
}
@Override
public void swim() {
}
}这样就好多了。即足够细分,又不过与松散。
Reactions are currently unavailable