00_3面向对象设计原则-单一职责
作者:互联网
单一职责:不要存在一个以上导致类变更的原因。
咱们简单的描述一下,假设有一个类负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障,这个类就存在两个导致类变更的原因。
我们来看个例子,我们的课程有直播课和录播课,直播课不能快进和快退,录播课可以任意地反复观看,功能职责不一样。来我们来看一下代码:
package org.test.design.principle.srp; public class Course { public void study(String courseName) { if ("直播课".equals(courseName)) { System.out.println("不能快进"); } else { System.out.println("可以任意地来回播放"); } } //测试调用 public static void main(String[] args) { Course course = new Course(); course.study("直播课"); course.study("录播课"); } }我们来分析一下这部分代码,Course类承担了两个处理逻辑,如果,现在对课程进行加密,那么直播课和录播课的加密逻辑是不一样的,必须修改代码。而修改代码逻辑势必会相互影响,容易带来不可控的风险。我们对职责进行分离解耦,分别创建两个类LiveCourse和ReplayCourse。 LiveCourse.java
package org.test.design.principle.srp; public class LiveCourse { public void study(String courseName) { System.out.println(courseName + "不能快进看"); } }ReplayCourse.java
package org.test.design.principle.srp; public class ReplayCourse { public void study(String courseName) { System.out.println(courseName + "可以任意地来回播放"); } }创建测试调用:
package org.test.design.principle.srp; public class SRPV2Test { public static void main(String[] args) { LiveCourse liveCourse=new LiveCourse(); liveCourse.study("直播课程"); ReplayCourse replayCourse=new ReplayCourse(); replayCourse.study("录播课"); } }代码在修改之后,开发起来简单,维护起来也容易。在实际项目中,代码会存在依赖、组合、耦合关系,在项目开发过程中还受到项目的规模、周期、技术人员水平、对进度的把控的影响,导致很多类都不能满足单一职责原则。但是,我们在编写代码的过程中,尽可能的让接口和方法保持单一职责,对项目后期的维护是有很大帮助的。
标签:00,职责,courseName,study,录播,面向对象,void,public 来源: https://www.cnblogs.com/mingong01/p/15523038.html