博客
关于我
面向对象设计原则——单一职责原则
阅读量:309 次
发布时间: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/

你可能感兴趣的文章
fufu学软件之IEDA配置项目依赖
查看>>
stl string详解
查看>>
基础算法学习大纲(附加yxc大佬算法模板)
查看>>
每日一题-bfs最短路径变式
查看>>
每日一题-区区区间间间(单调栈的应用)
查看>>
线段树模板
查看>>
区间dp学习4——poj 1651 Multiplication Puzzle——题后反思
查看>>
web学习(三)
查看>>
Mybatis进阶
查看>>
Arrays工具类(jre中基本类库提供的工具类)
查看>>
mybatis三种(查询,参数传递)
查看>>
JSP 登录案例实现
查看>>
Cookie和Session
查看>>
Cookie和Session 登录
查看>>
传输层协议介绍
查看>>
DHCP中继路由及其配置
查看>>
Chrome与vim双神器融合插件- vimium
查看>>
windows下端口查询进程查询以及杀死进程
查看>>
条款21:必须返回对象时,别妄想返回其reference
查看>>
条款23:宁以non-member、non-friend替换member函数
查看>>