日期:2025/04/04 19:52来源:未知 人气:62
例如员工管理的 Service 类中仅编写与员工相关的逻辑处理,就叫内聚程度高(高内聚 )。
在三层架构程序中,Controller 层调用 Service 层,Service 层又调用 DAO 层,且在 Controller 中实例化 Service 层实现类,在 Service 中实例化 DAO 层实现类,导致 Controller 与 Service 层、Service 与 DAO 层之间存在耦合。
例如,若 Service 层类名变化或切换实现类,Controller 代码需改动。
软件设计原则:高内聚低耦合
编辑
在当前三层架构程序中,Controller 需要调用 Service,直接实例化了 EmpServiceA。若要切换为EmpServiceB,Controller 代码需改动,这表明 Controller 与 Service 层之间代码耦合。
不能直接实例化 Service 层实现类。若删除实例化代码,直接运行会报错(空指针异常)。可提供一个容器来存储对象。
比如存储 EmpServiceA 创建的对象,Controller 运行时从容器中查找 EmpService类型的对象并赋值,若切换实现类为 B
,将B
创建的对象放入容器,Controller 同样从容器获取对象,这样实现类变化时 Controller 代码无需改动。
其含义是对象创建的控制权由应用程序 转移到外部容器 。原来的应用程序自身控制对象创建,现在交给容器管理。这个容器也叫 IOC容器 或 Spring容器。
其含义是容器为应用程序提供运行时所需要依赖的资源。
例如 Controller 程序运行时需要依赖 EmpService资源,容器为其提供的过程就叫依赖注入 。在 IOC容器 中创建管理的对象称为Bean
。
Bean对象:lOC容器中创建、管理的对象,称之为 bean。
END
学习自:黑马程序员——JavaWeb课程