// 订单model类, models/order.js
class Order {
    constructor() {}
    insert() {
        return true;
    }
}
// 订单类 controllers/OrderController.js
const Order = require("./Order.js");
class OrderController {
    constructor(order) {
        this.order = order;
    }
    createOrder(...args) {
        this.order.insert(...args);
    }
}
class IOC {
    constructor() {
        this.controller = new Map();
    }
    bind(key, callback) {
        this.controller.set(key, { callback, single: false });
    }
    sigleton(key, callback) {
        this.controller.set(key, { callback, single: true });
    }
    use(key) {
        const item = this.controller.get(key);
        if (!item) {
            throw new Error("error");
        }
        if (item.single && !item.instance) {
            item.instance = item.callback();
        }
        return item.single ? item.instance : item.callback();
    }
}
// router/index.js
const Order = require("../model/Order.js");
const OrderController = require("./OrderController.js");
ioc.bind("order", (...args) => new Order(...args));
ioc.bind("orderController", (...args) => new OrderController(ioc.use("order")));
// router.js
const ioc = require("../ioc.js");
const orderController = ioc.use("orderController");