在面向对象编程中,六大设计原则,旨在使软件设计更易于理解、灵活和可维护。这些经验是前人经过多年实践总结的经验。
六大设计原则如下:
· 单一职责原则
· 开闭原则
· 里氏替换原则
· 接口隔离原则
· 依赖反转原则
· 迪米特原则
本文我们来介绍依赖反转。
依赖反转强调的是实现依赖于抽象,不依赖底层逻辑,依赖反转是接口隔离原则的具体实现细节。
1.高层不依赖于底层模块,二者都是依赖于抽象。
2. 抽象接口不依赖于具体实现,而具体实现则应该依赖于抽象接口。
以前的三层应用架构,策略层会依赖方法层,业务逻辑层会依赖数据存储层。简单来说就是显示层展示界面调用业务逻辑层处理逻辑,逻辑层调用数据层。这种设计方法会导致维护困难、复用困难。
面对三层的设计缺陷就是利用依赖反转,每个高层模块都为它所需要的服务声明一个抽象接口,而低层模块则实现这些抽象接口,高层模块通过抽象接口使用低层模块。
以注册用户信息为例,我们需要逻辑层、逻辑层反转、数据层、数据层反转
interface I_Bll
{
void AddUserInfo(用户信息);
}
class UserBll: I_Bll
{
public void AddUserInfo(用户信息);
{
//todo用户信息
}
}
interface I_DAL
{
void UserInfo DataLayer(用户信息);
}
class UserDAL: I_DAL
{
public void UserInfo DataLayer(用户信息);
{
//todo用户信息保存到数据库
}
}
I_Bll UserBll=new UserBll();错误用法
I_DAL UserDAL=new UserDAL(); 错误用法
不能直接这样调用,这样做只是做了分层,没有起到控制反转的效果,
应该使用 DI或者IOC容器、Auto、自定义容器 等这些依赖注入容器
依赖反转面向抽象编程、不直接使用New()创建实例,借助注入容器实例化类,依赖反转能更好的帮助程序解耦。
| 留言与评论(共有 0 条评论) “” |