面向对象
约 290 字小于 1 分钟
设计模式面向对象
2026-04-14
面向对象特性
封装
把客观事物封装成类,每个类有自己的属性和方法。封装隐藏了对象的内部实现细节,只对外暴露必要的接口。
class Person {
#name; // 私有属性
#age;
constructor(name, age) {
this.#name = name;
this.#age = age;
}
getName() {
return this.#name;
}
}继承
子类继承父类的特征和行为,实现代码复用。
class Animal {
speak() {
console.log('Animal speaks');
}
}
class Dog extends Animal {
speak() {
console.log('Dog barks');
}
}多态
同一个行为具有多个不同表现形式。
class Cat extends Animal {
speak() {
console.log('Cat meows');
}
}
function makeSpeak(animal) {
animal.speak();
}
makeSpeak(new Dog()); // Dog barks
makeSpeak(new Cat()); // Cat meows面向对象原则
- 单一职责原则:一个类只负责一件事
- 开闭原则:对扩展开放,对修改关闭
- 里氏替换原则:子类必须能够替换父类
- 依赖倒置原则:依赖抽象而非具体
- 接口隔离原则:使用多个专门的接口
- 合成复用原则:尽量使用组合而非继承
- 迪米特法则:只与直接朋友通信
