首页 > web前端 > js教程 > 【A部分SOLID Typescript简介

【A部分SOLID Typescript简介

DDD
发布: 2024-12-31 05:08:09
原创
972 人浏览过

[Part A Brief Introduction to SOLID Typescript

I——接口隔离原则(ISP)

不应强迫客户端实现他们不使用的接口。

这意味着接口应该很小并且特定于实现类的需求。
例如:

❌不好

interface Work{
    eat(): void;
    work(): void;
}

class Developer implements Work{
    eat() {
        console.log("eat");
    }
    work() {
        console.log("work");
    }
}
class Robot implements Work{
    eat() {
        throw new Error("eat"); // Robot does not need to inherit eat() method
    }
    work() {
        console.log("work");
    }
}
登录后复制

✅好

interface Workable  {
    work(): void;
}
interface Eatable {
    eat(): void;
}
class Developer implements Workable, Eatable {
    eat() {}

    work(): void {
    }
}
登录后复制

基于接口的强度,一个类可以实现多个接口。您应该将界面分成更小的部分,以更好地满足您的班级的需求


D - 依赖倒置原则(DIP)

*高级模块不应依赖于低级模块。两者都应该依赖于抽象。
*

该原则鼓励使用依赖注入
例如:

❌不好

class BackendDeveloper {
    develop(){
        console.log("Developing developer");
    }
}
class FrontendDeveloper {
    develop(){
        console.log("FrontendDeveloper");
    }
}
class Project {
    backendDeveloper: BackendDeveloper;
    frontendDeveloper: FrontendDeveloper;
    constructor() {
        this.backendDeveloper = new BackendDeveloper();
        this.frontendDeveloper = new FrontendDeveloper();
    }
    build(){
        this.backendDeveloper.develop();
        this.frontendDeveloper.develop();
    }
}
登录后复制

在代码片段中,存在多个问题。但是,您可以看到的最重要的问题是:

  • 如果你想添加MobileDeveloper(),你需要修改Project(),这会影响其他使用它的方法
  • Project() 与 backendDeveloper 和 frontendDeveloper 紧密耦合

✅好

interface Developer {
    developer(): void
}
class BackendDev implements Developer {
    developer() {
        console.log("Developer Developer");
    }
}
class FrontendDeveloper implements Developer {
    developer() {
        console.log("Developer Developer");
    }
}
class Project {
    constructor(private developers: Developer[]) {
    }
    build(){
        this.developers.forEach(developer => {developer.developer();});
    }
}

登录后复制

高级模块依赖于抽象(开发者接口)。
低级模块实现抽象。
松耦合使其易于扩展和维护。

添加 MobileDev:

class MobileDeveloper implements Developer {
  develop() {
    console.log("Writing mobile code");
  }
}

// Usage
const developers: Developer[] = [
  new BackendDeveloper(),
  new FrontendDeveloper(),
  new MobileDeveloper(), //easy to add and make it does not change in Project()
];
const project = new Project(developers);
project.build();

登录后复制

谢谢你:)))

以上是【A部分SOLID Typescript简介的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板