博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单一职责原则
阅读量:4094 次
发布时间:2019-05-25

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

一、单一职责原则

基本介绍

单一职责原则是针对 来说的,即一个类应该只负责一项职责。如果类A负责两个不同的职责:职责1和职责2。当职责1需求变更而改变类A时,可能造成职责2执行错误,所以需要将类A的粒度进行分解,为分别分解成类A1和类A2

应用实例
  1. 方式一
public class SingleResponsibility1 {    public static void main(String[] args) {        Vehicle vehicle = new Vehicle();        vehicle.run("摩托车");        vehicle.run("汽车");        vehicle.run("飞机");    }}// 交通工具类class Vehicle{    public void run(String vehicle) {        System.out.println(vehicle + " 在公路上运行.....");    }}

运行结果:

摩托车 在公路上运行.....汽车 在公路上运行.....飞机 在公路上运行.....

分析:

在run方法中,违反了单一职责原则。优化办法是可根据交通工具运行方法不同,分解成不同的类即可

  1. 方式二
public class SingleResponsibility2 {    public static void main(String[] args) {        RoadVehicle roadVehicle = new RoadVehicle();        roadVehicle.run("摩托车");        AirVehicle airVehicle = new AirVehicle();        airVehicle.run("飞机");        WaterVehicle waterVehicle = new WaterVehicle();        waterVehicle.run("游艇");    }}class RoadVehicle{    public void run(String vehicle){        System.out.println(vehicle + " 公路运行.....");    }}class AirVehicle{    public void run(String vehicle){        System.out.println(vehicle + " 天空运行.....");    }}class WaterVehicle{    public void run(String vehicle){        System.out.println(vehicle + " 水中运行.....");    }}

运行结果:

摩托车 公路运行.....飞机 天空运行.....游艇 水中运行.....

分析:

遵守了单一职责原则,但改动比较大。可采用为Vehicle类增加不同类型的run()的方式进行优化,这样改动的代码会比较少

  1. 方式三
public class SingleResponsibility3 {    public static void main(String[] args) {        Vehicle2 vehicle2 = new Vehicle2();        vehicle2.run("汽车");        vehicle2.runAir("飞机");        vehicle2.runWater("游艇");    }}class Vehicle2{    public void run(String vehicle){        System.out.println(vehicle + " 在公路上运行.....");    }    public void runAir(String vehicle){        System.out.println(vehicle + " 在天空上运行.....");    }    public void runWater(String vehicle){        System.out.println(vehicle + " 在水中运行.....");    }}

运行结果:

汽车 在公路上运行.....飞机 在天空上运行.....游艇 在水中运行.....

分析:

这种方式虽然没有在类这个级别上遵守单一职责原则,但是在方法级别上,仍然遵守了单一职责原则

注意事项和细节

(1)降低类的复杂度,一个类只负责一项职责

(2)提高类的可读性、可维护性
(3)降低变更引起的风险
(4)通常情况下,我们应当遵守单一职责原则。只有当逻辑足够简单时,才可以在代码级违反单一职责原则;若类中方法数量足够少,允许在方法级别保持单一职责原则

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

你可能感兴趣的文章
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>
解决SimpleDateFormat线程安全问题NumberFormatException: multiple points
查看>>
MySQL数据库存储引擎简介
查看>>
处理Maven本地仓库.lastUpdated文件
查看>>
Kafka | 请求是怎么被处理的?
查看>>
Java并发编程1-线程池
查看>>
CentOS7,玩转samba服务,基于身份验证的共享
查看>>
计算机网络-网络协议模型
查看>>
计算机网络-OSI各层概述
查看>>
Java--String/StringBuffer/StringBuilder区别
查看>>