博客
关于我
面向对象设计原则——单一职责原则
阅读量:307 次
发布时间:2019-03-04

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

概念

不要存在多于一个导致类变更的原因,也就是说每个类应该实现单一的职责,否则就应该把类拆分。交杂不清的职责将使得代码牵一发而动全身,导致代码混涩难懂,不易修改、难以扩展和复用。如:以前开发C/S程序中的胖客户端程序,就是将人机交互逻辑、业务加工处理逻辑和数据库操作逻辑混合在一起。

实现

单一职责原则是进行类的划分和封装的基本原则,进行类的具体抽象。尽量做到,类的功能单一和清晰化。

  1. 根据机能划分,使用封装来创建对象之间的分界层,让设计者可以在分界层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合。
  2. 当前开发框架一般为分层框架,在分层框架中,已经明确给出了各层的职责,对于业务简单的小型系统,个人认为类的划分按照以下步骤即可。
    前端页面:职责主要处理用户操作逻辑(包括有效性验证、样式),将公用的控件、组件进行独立封装,封装的组件不进行后台数据的访问。功能模块(独立页面)为单位完成各种组件控件的组装和数据的提取。
    后端controller层:职责为完成对前端展示数据的格式转换及提交操作信息的接收;小型信息系统一般以前端独立页面(功能模块)为单位封装controller,一个controller完成相应功能模块所有的信息功能。
    后端services层:职责完成业务逻辑及数据的加工;与controller层封装类对应,对外接口满足controller的需求,还需对数据的加工处理、业务规则进行抽象,进一步进行划分相关业务类,后端services类似设计模式中门面模式,将controller和各种业务逻辑及数据库逻辑进行隔离,仅提供和controller之间的交互。一般小型简单系统仅使用后端services类即可完成。
    dao层:职责完成数据持久化问题;dao层类分两种,一种为需要进行增删改查操作的表创建一个dao层类(接口);另一种是完成关联查询、存储过程的按照功能划分独立的类(接口)
    实体层:职责则是数据的载体功能;需要完成增删改查表创建独立实体;对于关联查询创建独立的数据实体。

拓展:

  1. 单一职责原则是写代码最容易违反的一个原则,违反此原则代码立即转换成all in one;
  2. 虽然很多框架明确规定各层职责,但程序员经常将代码写到一处;
  3. 虽然使用面向对象语言,还是面向过程调用

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

你可能感兴趣的文章
【论文泛读29】关系抽取:卷积神经网络的视角
查看>>
shell 中的 set命令 -e -o 选项作用
查看>>
Python中JSON的基本使用
查看>>
函数的默认参数值,即在定义参数的时候给它一个默认值
查看>>
ubuntu install baidu inputmethod
查看>>
程序员建议(忘记从哪里转的了,反正是csdn上的一个兄弟)
查看>>
电脑重装系统后提示invalid partition table怎么解决
查看>>
c++ primer 5th 练习11.9自己编写的答案
查看>>
web实现断点续传
查看>>
自定义BootstrapTable扩展:分页跳转到指定页码
查看>>
【学习笔记】欧拉函数,欧拉公式
查看>>
Python3序列
查看>>
React中设置404页面
查看>>
BootstrapValidator手动触发部分验证
查看>>
vue调试工具vue-devtools安装及使用
查看>>
CSS总结div中的内容垂直居中的四种方法
查看>>
[BZOJ4878]挑战NP-Hard
查看>>
vue指令之v-for
查看>>
[CF1278F]Cards
查看>>
jQuery实现无刷新切换主题皮肤功能
查看>>