设计模式六大原则
1、单一职责原则
对类来说,一个类应该只负责一项职责,如类 A 负责两个不同的职责,职责 1、职责 2,当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所以需要将类 A 的粒度分为 A1,A2。
- 降低类的复杂度,一个类只负责一项职责
- 提高类的可读性,可维护性
- 降低变更引起的风险
- 通常情况下,我们应该遵守单一职责原则,只有逻辑足够简单,才可以在代码级违反单一职责原则:只有类中方法数量足够少,可以在方法级别保持单一职责原则。
举例:
class Single {
constructor (name) {
this.name = name
}
run () {
console.log(this.name + ' is running')
}
}
const car = new Single('汽车')
car.run()
const bus = new Single('公交车')
car.run()
2、接口隔离原则
客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
举例
interface AnimalProps {
name: string;
move: () => void
}
class Dog implements AnimalProps {
constructor (name) {
this.name = name
}
move () {
console.log(this.name + ' is moving')
}
}
3、依赖倒置原则
- 高层模块不应该依赖底层模块,二者都应该依赖其抽象。
- 抽象不应该依赖细节,细节应该依赖抽象
- 依赖倒置的中心思想是面向接口编程
- 依赖倒置原则是基于这样的设计理念:相对于细节的多边形,抽象的东西要稳定多,已抽象为基础大件的架构比以细节为基础的架构要稳定得多。
- 使用接口或抽象的目的是制定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类去完成。
举例
4、里氏替换原则
- 如果对每个类型为 T1 对对象 t1,都有类型为 T2 的对象 t2,使得以 T1 定义的程序 P 在所有的对象 t1 都替换成 t2 时,程序 P 的行为没有发生变化,那么类型 T2 是 T1 的子类型。换言之,所有引用基类的地方必须透明的使用其子类对象。
- 使用继承时,遵循里氏替换原则,子类中尽量不要复写父类的方法。
- 里氏替换原则告诉我们,继承实际上让两个类耦合性增强了,在适当的情况下,可以使用聚合、组合、依赖来解决问题。
举例
待补充......
网友评论