接口隔离原则
2023/11/29大约 5 分钟
接口隔离原则
一个类对另一个类的依赖应该建立在最小的接口上。
要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。
一些要求:
- 接口尽量小,但是要有限度。一个接口只服务于一个子模块或业务逻辑。
- 为依赖接口的类定制服务。只提供调用者需要的方法,屏蔽不需要的方法。
- 了解环境,拒绝盲从。每个项目或产品都有选定的环境因素,环境不同,接口拆分的标准就不同深入了解业务逻辑。
- 提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
举例说明
这里通过一个例子对接口隔离原则进行说明。例如:
定义两个接口:Animal 和 Flyable,分别表示动物和可飞行的对象。
然后,创建两个类:Bird 和 Dog。
Bird类实现了Animal和Flyable接口,表示一只鸟,具有吃和飞行的功能;Dog类实现了Animal接口,表示一只狗,只具有吃的功能。
/**
* 接口隔离原则Demo
*/
interface Animal {
eat: () => void
}
interface Flyable {
fly: () => void
}
class Bird implements Animal, Flyable {
public eat(): void {
console.log('Bird is eating...')
}
public fly(): void {
console.log('Bird is flying...')
}
}
class Dog implements Animal {
public eat(): void {
console.log('Dog is eating...')
}
}
// 使用示例
const bird = new Bird()
bird.eat()
bird.fly()
const dog = new Dog()
dog.eat()通过这种设计,将吃和飞行的功能分别定义在不同的接口中,并由相应的类来实现,遵循了接口隔离原则。
这样的设计使得类的职责更加明确,客户端可以根据需要选择性地使用不同的类,提高了代码的灵活性和可复用性。
**接口隔离原则建议将臃肿的接口分解为更小、更具体的接口,以避免客户端依赖于它们不需要的接口成员。这样可以减少接口的复杂性,提高代码的灵活性和可复用性。 **
更新日志
2025/5/18 18:01
查看所有更新日志
24657-于c0f2d-于6b33b-于e6a79-于
