23种设计模式 六大设计原则 IOC-->awilix-koa
<!-- //对象是怎么查找属性的 创建型模式(Creational Patterns): 单例模式(Singleton Pattern) 工厂方法模式(Factory Method Pattern) 抽象工厂模式(Abstract Factory Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 结构型模式(Structural Patterns): 适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 行为型模式(Behavioral Patterns): 责任链模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解释器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) 观察者模式(Observer Pattern) 状态模式(State Pattern) 策略模式(Strategy Pattern) 模板方法模式(Template Method Pattern) 访问者模式(Visitor Pattern) --> <!-- 设计原则(Design Principles) 单一责任原则(Single Responsibility Principle - SRP): 一个类应该只有一个引起它变化的原因。每个类应该只关注一个特定的功能或责任。 开放-封闭原则(Open-Closed Principle - OCP): 软件实体(类、模块、函数等)应该对扩展开放,但对修改封闭。 这意味着可以通过扩展来改进系统的功能,而不需要修改已经存在的代码。 里氏替换原则(Liskov Substitution Principle - LSP): 派生类应该能够替代其基类,而不会引入不一致性或破坏程序的正确性。 依赖倒置原则(Dependency Inversion Principle - DIP): 高层模块不应该依赖于低层模块,两者都应该依赖于抽象。 抽象不应该依赖于细节,细节应该依赖于抽象。 接口隔离原则(Interface Segregation Principle - ISP): 不应该强制客户端依赖于它们不使用的接口。接口应该小而专一,而不是大而笨重。 迪米特法则(Law of Demeter - LoD): 一个对象应该对其他对象有最少的了解,也就是说,对象之间的耦合应该尽可能低。 -->
六大设计原则
遵寻solid原则(面向对象):
s:单一原则 一个类只做一件事
o:开放原则 类、模块、函数具有扩展性
l:里氏替换原则 子类可以替换基类
i:接口隔离原则 接口隔离、分散,不要堆在一起
合成/聚合复用原则
npm库:awilix-koa
const { asClass, asValue, createContainer } = require('awilix') const { scopePerRequest,loadControllers } = require('awilix-koa')
const container = createContainer()
创建container容器
//把容器注入到路由中
app.use(scopePerRequest(container));
app.use(loadControllers(`${__dirname}/routers/*.ts`));
import { GET, route } from 'awilix-koa';
import { Context } from 'koa';
class IndexController {
@route('/test')
@GET()
async actionIndex(ctx: Context) {
ctx.body = 'Hello World';
}
}
export default IndexController;
model文件夹,是数据interface
interface文件夹:函数签名,是函数返回