一、标准的三层架构模式
Blog.AutoFac.ConsoleApp:控制台应用程序代替界面层(UI),负责处理数据;
Blog.AutoFac.Service:业务逻辑层(BLL),负责业务逻辑运算;
Blog.AutoFac.Repository:数据访问层(DAL),负责提供数据。
BlogService 在构造函数初始化 BlogRepository 对象,BlogService 实现依赖于 BlogRepository。BlogRepository 的代码改动也会导致 BlogService 代码改动,这是一种紧密耦合关系。
数据访问层代码:
/// <summary>
/// 博客仓储
/// </summary>
public class BlogRepository
{
public string GetBlogName(long BlogId)
{
return "Autofac入门到入坟";
}
}
业务层代码:
public class BlogService
{
readonly BlogRepository _blogRepository;
public BlogService()
{
_blogRepository= new BlogRepository();
}
public string GetBlogName(long BlogId)
{
return _blogRepository.GetBlogName(BlogId);
}
}
二、面向接口
面向接口编程是面向对象编程的一部分,通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。
面向接口好处是降低程序的耦合性,相对于标准的三层架构模式,解除BlogService 对于 BlogRepository 的依赖,易于程序的扩展。
面向接口编程遵循设计模式的开闭原则(对扩展开放,对修改关闭),将具体逻辑与实现分开,有新的改动可以添加新类,减少对于其他模块的影响。
Blog.AutoFac.ConsoleApp:界面层(UI),负责展示数据;
Blog.AutoFac.Service:业务逻辑层(BLL),负责业务逻辑运算;
Blog.AutoFac.Repository:数据访问层(DAL),负责提供数据;
Blog.AutoFac.IService:业务逻辑抽象层(InterfaceBLL),业务逻辑运算抽象接口;
Blog.AutoFac.IRepository:数据访问抽象层(InterfaceDAL),