zoukankan      html  css  js  c++  java
  • 设计模式>单一职责原则 小强斋

    单一职责原则【Single Responsibility Principle】

    1、单一职责原则

    单一职责原则:应该有且仅有一个原因引起类的变更

    There should never be more than one reason for a class to change.

    2、使用单一职责原则的好处

    1. 类的复杂性降低,实现什么职责都有清晰明确的定义;

    2. 可读性提高,复杂性降低,那当然可读性提高了;

    3. 可维护性提高,那当然了,可读性提高,那当然更容易维护了;

    4. 变更引起的风险降低,变更是必不可少的,接口的单一职责做的好的话,一个接口修改只对相应的实现类有影响,与其他的接口无影响,这个是对项目有非常大的帮助。

    3、应用

    3.1、接口

    对于接口,我们在设计的时候一定要做到单一,

    用户的属性(Properties)和用户的行为(Behavior)没有分开,应该把用户的信息抽取成一个业务对象(BussinessObject,简称BO),把行为抽取成另外一个接口中,

    重新拆封成两个接口,IUserBO负责用户的属性;IUserBiz负责用户的行为,完成用户的信息的维护和变更

    3.2、类

    但是对于实现类就需要多方面考虑了,生搬硬套单一职责原则会引起类的剧增,给维护带来非常多的麻烦;而且过分的细分类的职责也为人为的制造系统的复杂性,本来一个类可以实现的行为非要拆成两个,然后使用聚合或组合的方式再耦合在一起,这个是人为制造了系统的复杂性

    3.3、方法

    单一职责使用于接口、类,同时也使用方法

    在IUserManager中定义了一个方法叫changeUser,根据传递的type不同,把可变长度参数changeOptions修改到userBo这个对象上,并调用持久层的方法保存到数据库中。

    缺点:方法职责不清晰,不单一

    你要修改用户名称,就调用changeUserName方法,你要修改家庭地址就调用changeHomeAddress,你要修改单位单户就调用changeOfficeTel方法,每个方法的职责就非常清晰,

  • 相关阅读:
    Spring Security教程(一)
    java报错:The reference to entity "characterEncoding" must end with the ';' delimiter.
    SpringBoot定时任务升级篇(动态添加修改删除定时任务)
    SpringBoot几种定时任务的实现方式
    JDK中的Timer和TimerTask详解
    SpringMVC拦截器与SpringBoot自定义拦截器
    Java注解入门
    Servlet 4.0 入门
    spring邮件发送
    class path resource [spring/ApplicationContext-springmvc.xml] cannot be opened because it does not exist
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5637345.html
Copyright © 2011-2022 走看看