架构设计之依赖反转

在面向对象编程中,六大设计原则,旨在使软件设计更易于理解、灵活和可维护。这些经验是前人经过多年实践总结的经验。

六大设计原则如下:

· 单一职责原则

· 开闭原则

· 里氏替换原则

· 接口隔离原则

· 依赖反转原则

· 迪米特原则

本文我们来介绍依赖反转。

依赖反转

依赖反转强调的是实现依赖于抽象,不依赖底层逻辑,依赖反转是接口隔离原则的具体实现细节。

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 条评论) “”
   
验证码:

相关文章

推荐文章