面向对象设计原则——单一职责原则
发布日期:2021-05-07 01:31:59 浏览次数:11 分类:技术文章

本文共 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. 虽然使用面向对象语言,还是面向过程调用
上一篇:hdu-4925 Apple Tree
下一篇:hdu1033 Edge

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月31日 11时09分53秒