保函网

Service层和Dao层真的有必要每个类都加上接口吗

发布时间:2026-03-21 | 来源:互联网转载和整理

我们开发程序的目的是为了完成业务功能,理想的情况下程序中的每一条语句都应该是与业务直接相关的,例如程序中不应该出现连接数据库,读取某个字段等纯技术性的操作,而应该是得到用户A的基本信息等具有业务含义的操作.dao(dataaccessobject)层存在的意义在于将与数据持久化相关的函数调用剥离出去,提供一个具有业务含义的封装层.原则上说,dao层与utils等帮助类的功能非常类似,只是更加复杂一些,需要依赖更多的对象(如DataSource,SessionFactory)等.如果不需要在程序中屏蔽我们对于特定数据持久层技术的依赖,例如屏蔽对于Hibernate的依赖,在dao层我们没有必要采用接口设计.一些简单的情况下我们甚至可以取消整个dao层,而直接调用封装好的一些通用dao操作函数,或者调用通用的EntityDao类等.程序开发的过程应该是从业务对象层开始的,并逐步将纯技术性的函数调用剥离到外部的帮助类中,同时我们会逐渐发现一些业务操作的特定组合也具有明确的含义,为了调用的方便,我们会把它们逐步补充到service层中.在一般的应用中,业务逻辑很难稳定到可以抽象出接口的地步,即一个service接口不会对应于两个不同的实现,在这种情况下使用接口往往也是没有必要的.在使用spring的情况下原则上应该避免使用getBean的调用方式,应该尽量通过注入来获得依赖对象,但有时我们难免需要直接获取业务对象,在不使用接口的情况下可以采用如下方式classTaskService{publicstaticTaskServicegetInstance(){return(TaskService)BeanLoader.getBean(TaskService.class);}}在程序中我们可以直接使用TaskService.getInstance()来得到TaskService对象.通过命名规范的约定,我们可以从类名推导出spring配置文件中的对象名,因而不需要使用一个额外的硬编码字符串名.

dao层

上一篇:2018年生肖五行怎样

下一篇:宗璞的《董师傅游湖》的阅读全部答案

其他文章

  • 茅台酒和茅台镇的酒有什么区别?
  • 无羞无臊是什么意思
  • 2017临床医学考研吧
  • 金融学专业投资科学
  • 坐汽车从东莞到海口要多长时间
  • 白菜用英语怎么说 两颗白菜用英语怎么说
  • 江南十校哪十校
  • 教师资格证是永久性的吗(教师资格证是永久的吗)
  • cvt无级变速和6挡手自一体,有什么区别
  • 黄鹤楼写作背景20字(黄鹤楼写作背景)
  • 2023年达州职业技术学院单招报名条件有哪些
  • 2015年中考平果高中录取分数线是多少
  • 建筑工程测量前途如何?
  • 忠武路演员是什么意思 宋仲基是忠武路演员吗
  • 竹笋有哪些品种,竹笋哪些品种可以吃
  • renee英文名是什么意思
  • 记叙文的表达方式有哪五种(记叙文的表达方式)
  • 对女生说的情话古风句子很甜还撩
  • 麻雀肉怎么做好吃
  • 老鼠用英语怎么读