多态
ts
interface Phone {
brand: string;
name: string;
seeName(): void;
seeBrand(): void;
}
class androidPhone implements Phone {
constructor(public name: string, public brand: string) { }
seeName() {
console.log(this.name);
}
seeBrand() {
console.log("Android");
}
}
class iPhone implements Phone {
constructor(public name: string, public brand: string) { }
seeName() {
console.log(this.name);
}
seeBrand() {
console.log("iOS");
}
}
function seeNameAndBrand(phone: Phone){
phone.seeName();
phone.seeBrand();
}
let a = new androidPhone("Galaxy S20", "Samsung");
let i = new iPhone("iPhone 12", "Apple");
seeNameAndBrand(a);
seeNameAndBrand(i);控制反转
逻辑层的服务不由逻辑层实现,而转由框架实现,将程序的控制权交给框架或者容器,逻辑层只需要声明依赖即可。 nest.js 的控制反转体现在:
- 模块中 service 和 controller 解耦
- 模块 controller 和 provider 解耦