软件编程
位置:首页>> 软件编程>> java编程>> Java设计模式七大原则之单一职责原则详解

Java设计模式七大原则之单一职责原则详解

作者:温故知新之java  发布时间:2022-05-12 20:48:58 

标签:Java,设计模式,单一职责原则

定义

单一职责原则(Single Responsibility Principle, SRP),有且仅有一个原因引起类的变更。简单来说,就是针对一个java类,它应该只负责一项职责。例如一个Test.java类,它有两个职责:职责1,职责2。当职责1进行修改时,有可能影响到职责2,所以需要将Test.java类拆分成Test1.java和Test2.java两个单一职责的类。

案例

需求

有一个交通工具类,里面定义一个在各种交通工具的方法,创建交通工具的实例,调用方法,方法内执行打印操作

方案一

定义交通工具类Transportation.java

public class Transportation {

/**
    * 汽车
    * @author: liyajie
    * @date: 2022/1/28 14:45
    * @param car
    * @return void
    * @exception:
    * @update:
    * @updatePerson:
    **/
   public static void car(String car) {
       System.out.println(car + "在公路上跑");
   }

/**
    * 火车
    * @author: liyajie
    * @date: 2022/1/28 14:45
    * @param train
    * @return void
    * @exception:
    * @update:
    * @updatePerson:
    **/
   public static void train(String train) {
       System.out.println(train + "在铁轨上跑");
   }

/**
    * 飞机
    * @author: liyajie
    * @date: 2022/1/28 14:45
    * @param airplane
    * @return void
    * @exception:
    * @update:
    * @updatePerson:
    **/
   public static void airplane(String airplane) {
       System.out.println(airplane + "在天上飞");
   }

定义测试类Test1.java

public class Test1 {
   public static void main(String[] args) {
       Transportation transportation1 = new Transportation();
       transportation1.car("汽车");
       transportation1.train("火车");
       transportation1.airplane("飞机");
   }
}

方案二

定义汽车类Car.java

public class Car {

/**
    * 汽车
    * @author: liyajie
    * @date: 2022/1/28 14:45
    * @param car
    * @return void
    * @exception:
    * @update:
    * @updatePerson:
    **/
   public void car(String car) {
       System.out.println(car + "在公路上跑");
   }
}

定义火车类Train.java

public class Train {

/**
    * 火车
    * @author: liyajie
    * @date: 2022/1/28 14:45
    * @param train
    * @return void
    * @exception:
    * @update:
    * @updatePerson:
    **/
   public void train(String train) {
       System.out.println(train + "在铁轨上跑");
   }
}

定义飞机类Airplane.java

public class Airplane {

/**
    * 飞机
    * @author: liyajie
    * @date: 2022/1/28 14:45
    * @param airplane
    * @return void
    * @exception:
    * @update:
    * @updatePerson:
    **/
   public void airplane(String airplane) {
       System.out.println(airplane + "在天上飞");
   }
}

定义测试类Test2.java

public class Test2 {
   public static void main(String[] args) {
       Car car = new Car();
       car.car("汽车");

Train train = new Train();
       train.train("火车");

Airplane airplane = new Airplane();
       airplane.airplane("飞机");
   }
}

对比分析

方案一,是将汽车,火车,飞机的方法都写在了同一个类里,但是每个交通工具都有自己的方法,做到了方法上的单一职责,如果发生变更,该方案改动较小,但有一定的误操作风险

方案二,是将汽车,火车,飞机分别创建三个类,每个类里只有一种交通工具的方法,做到了类上的单一职责,如果发生变更,该方案改动较大,没有误操作风险

来源:https://juejin.cn/post/7058150940045475877

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com