Skip to content

多态

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 解耦