javascript - "IOC container"是否只是维护依赖关系?

标签 javascript c spring design-patterns ioc-container

根据wiki ,

A dependency is an object that can be used (as a service).

<小时/>

Image processing application 是 OOP 范式风格的 C 语法,可解决 4 个 Angular 色,如下所示。

1) 接口(interface) (handlers.h)

typedef struct {
    int (*canHandle) (char *);
    int (*drawImage)(char *);
    int (*savefile)(char *);
}imageHandler;
<小时/>

2) 获取一个依赖项 (gifhandler.c)

imageHandler gifhandler = {
    gif_canHandle,
    gif_drawImage,
    gif_savefile
};
<小时/>

3) 依赖容器(由config.c处理)

//gifhandler.c - dependency 
int _init(){
    printf(" registering gifhandler \n");
    reg_handler(&gifhandler);
    return 0;
}

//config.c
imageHandler *imagehandlers[10];
int reg_handler(imageHandler *ih){
// we need to perform checks here.
    imagehandlers[libs] = ih;
    libs++;
    return TRUE;
}
// config.c
int init_handlers(){
    .....
    soptr = dlopen(so_name,RTLD_NOW);
    ....
}
<小时/>

4) 客户端 - 服务定位器 (UI.C)

// UI.C
switch(choice){
        case 1:
            vdrawImage(filename);   
            break;
        case 2:
            vsavefile(filename);
            break;
}
// viml.c
int vdrawImage(char *filename){
    ...
    handleno = find_handler(filename);
    ...
    ih=imagehandlers[handleno];
    ih->drawImage(filename);    
    return FALSE;       
}
// viml.c
int vsavefile(char *newfilename ){
    ...
    handleno = find_handler(newfilename);
    ...
    ih=imagehandlers[handleno];
    ih->savefile(newfilename); 
}
<小时/>

1) 要在依赖项容器中添加新的依赖项(libxyzhandl.so.1),只需在 config.txt 中添加一个新条目 可配置,如下图,

config.txt

./libgifhandl.so.1

./libtiffhandl.so.1

2) ./libxyzhandl.so.1 提供的新服务将包含在依赖项容器中,无需重新编译应用程序。

3) 不需要测试完整的应用程序,libxyzhandl.so 的源代码除外。

因此,如果 config.txt 变为空,那么应用程序不会执行任何操作,只是说,我们无法处理此类文件,如 here 所示。 ,对于任何输入(图像文件)。

下面是调用流程的可视化,

enter image description here

问题:

1)依赖容器IOC容器不同吗?

2) Spring IOC 容器是否提供了比维护依赖项更多的功能?

最佳答案

这些基本上是同一件事。人们倾向于互换使用它们。你可以找到一个很好的解释herehere .
您展示的实现允许简单的运行时注入(inject)依赖项,但所谓的 IoC 容器(如 Spring 上下文)没有什么不同。

关于javascript - "IOC container"是否只是维护依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47805541/

相关文章:

c - C 中的段错误套接字

c - 如何构建具有相似名称的多个目标?

java - 如何向参数为 Class< 的方法提供有效的类?扩展注释>?

java - JSP 应用程序中集成 vaadin View 的问题

Javascript - 从外部访问函数闭包中的变量

javascript - 无法从客户端获取 JSON 数据

javascript - 推送多个 json 数组 - javascript

c - 平等运算符不工作 `c`

JavaScript 自动幻灯片放映,尝试获取工作按钮

java - Spring Boot验证: get max size from property file