美文网首页Java工作知识
设计原则:单一职责原则

设计原则:单一职责原则

作者: 谁家的猪 | 来源:发表于2019-07-10 19:44 被阅读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

    相关文章

      网友评论

        本文标题:设计原则:单一职责原则

        本文链接:https://www.haomeiwen.com/subject/ohmahctx.html