博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你必须要知道的架构知识~第三章 接口用来制定操作的统一性
阅读量:6944 次
发布时间:2019-06-27

本文共 1911 字,大约阅读时间需要 6 分钟。

在很多教科书中都这样定义“接口”,接口用来定义一种操作的规范,它的命名为I开头,内部元素均为public,接口中的方法与属性只能定义声明,不能实现,它们只能通过子类去实现,这些东西不是我今天要说的重点,我今天要说的接口主要从它为了实现“操作的统一”去说明。

在Repository模块中,一般将数据层的“增,删,改,查”进行统一的封装,然后调用时,统一来自一个地方,这样可以大大降低维护的成本。在操作统一性上可以从两个方面去看,其一就是接口为操作提供统一的入口,代码可能是这样:

 ///     /// 通¨用?数y据Y库a访?问ê接ó口ú    ///     public interface IRepository    {        ///         /// 更ü新?记?录?        ///         ///         void Update
(TEntity entity) where TEntity : BaseEntity; ///
/// [批ú量?]更ü新?记?录? /// ///
void Update
(IList
list) where TEntity : BaseEntity; ///
/// 插?入?记?录? /// void Insert
(TEntity entity) where TEntity : BaseEntity; ///
/// [批ú量?]插?入?记?录? /// void Insert
(IList
list) where TEntity : BaseEntity; ///
/// 插?入?记?录?并¢返μ回?刚?刚?立¢即′插?入?的?状′态?视ó图? /// TEntity InsertGetIDENTITY
(TEntity entity) where TEntity : BaseEntity; ///
/// 删?除y有D多à个?参?数y控?制?的?对?象ó /// ///
void Delete
(TEntity entity) where TEntity : BaseEntity; ///
/// 返μ回?默?认?结á果?集ˉ /// ///
IQueryable
GetModel
() where TEntity : BaseEntity; ///
/// 根ù据Y主÷键ü返μ回?实μ体? /// ///
TEntity GetModelById
(long id) where TEntity : BaseEntity; }

 

即数据层具体实体操作类型中要想对数据表进行CURD操作,必须从IRepository接口的实现类中去调用,这就是操作入口的统—;其实在方法参数中也实现了统一,我们可以看到参数类型为继承了BaseEntity这个类型(接口也是可以的,这里用的是抽象类)的泛型,这体现了传统参数的统一,在.net framworks中“类型的逆变”的特性。

我们在业务必层或者UI层(小项目可能不用业务层)调用时,代码可能是这样:

public class HomeController : BaseController   {       public HomeController()           : this(new DataRepository()) { }       public HomeController(IRepository iRepository)       {           _iRepository = iRepository;       }       public ActionResult Index()       {           List
userList = _iRepository.GetModel
().ToList(); return View(userList); }
}

转载地址:http://yaanl.baihongyu.com/

你可能感兴趣的文章
【转载】aspx,ascx和ashx使用小结
查看>>
我的Android进阶之旅------> Android在TextView中显示图片方法
查看>>
调整CodeIgniter错误报告级别
查看>>
python连续爬取多个网页的图片分别保存到不同的文件夹
查看>>
时间记录日志
查看>>
Node.js
查看>>
进程 线程通信方式(转载)
查看>>
python 从小白开始 - 字符串操作(不可修改)
查看>>
微信小程序 app.json 配置
查看>>
ROCKETMQ——2主2从集群部署
查看>>
横向纵向菜单制作 Jquery
查看>>
Android SDK更新以及ADT更新出现问题的解决办法
查看>>
海量数据:判断一棵树是否为另一棵树的子树
查看>>
Android中Application类用法(转)
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射
查看>>
【struts2】struts2中的流接收与流发送
查看>>
【VMCloud云平台】SCSM(十)服务请求到资源落地
查看>>
Maven组件通过命令上传本地和私有仓库
查看>>
Java编程时间格式与数据库中时间格式转化
查看>>
PhpGACL手册(一)
查看>>