Java工作知识

设计原则:单一职责原则

2019-07-10  本文已影响1人  谁家的猪

定义:不要存在多于一个导致类变更的原因
一个类/接口/方法只负责一项职责
优点:降低类的复杂度,提高类的可读性,提高系统的可维护性,降低变更引起的风险

示例

实现一个让鸟飞起来的类

代码实现

  1. 实现Bird类
/**
 * @author lijiayin
 */
public class Bird {
    
    public void fly(String birdName){
        System.out.println(birdName + "用翅膀飞");
    }
}
  1. 创建测试类
/**
 * @author lijiayin
 */
public class Test {
    public static void main(String[] args) {
        Bird bird = new Bird();
        bird.fly("大雁");
        bird.fly("鸵鸟");
    }
}
  1. 测试结果


    测试结果.png

鸵鸟也能飞?

鸵鸟是不能飞的,应该走路。

代码实现

  1. 修改Bird类
/**
 * @author lijiayin
 */
public class Bird {
    
    public void fly(String birdName){
        if("鸵鸟".equals(birdName)){
            System.out.println(birdName + "用脚走路");
        }else {
            System.out.println(birdName + "用翅膀飞");
        }
    }
}
  1. 测试结果


    测试结果.png

更好的实现方式

让每个类实现一个功能,例如飞和走应该用两个类

代码实现

  1. 创建FlyBird类
/**
 * @author lijiayin
 */
public class FlyBird {

    public void move(String birdName){
        System.out.println(birdName + "用翅膀飞");
    }
}
  1. 创建WalkBird类
/**
 * @author lijiayin
 */
public class WalkBird {

    public void move(String birdName){
        System.out.println(birdName + "用脚走路");
    }
}
  1. 修改测试类
/**
 * @author lijiayin
 */
public class Test {
    public static void main(String[] args) {
        FlyBird flyBird = new FlyBird();
        flyBird.move("大雁");
        
        WalkBird walkBird = new WalkBird();
        walkBird.move("鸵鸟");
    }
}
  1. 测试结果


  2. UML


    UML.png
上一篇 下一篇

猜你喜欢

热点阅读