设计模式课程 设计模式精讲 3-6 单一职责原则Coding

1    要点讲解

1.1  需要注意

2    代码演练

2.1  类的单一职责原则demo

2.2  接口的单一职责原则demo

2.3  方法的单一职责原则demo

1    要点讲解

1.1  需要注意

1.1.1  实际应用中,类不采用单一职责,接口和方法采用单一职责。
1.1.2  定义:单一职责规定 一个类,接口或者方法,只有一个变化的原因
1.1.3  优点:降低类的复杂性,提高可读性,维护时风险降低
1.1.4  实际应用,受依赖,组合,聚合这些关系影响,同时受控于项目规模,项目周期,技术人员水平,对进度把控等影响。适当的应用单一职责原则。

 

2    代码演练

2.1  类的单一职责原则demo

测试类:

package com.geely.design.principle.singleresponsibility;

public class Test {
    public static void main(String[] args) {
        WalkBird walkBird = new WalkBird();
        walkBird.birdMove("鸵鸟");

        FlyBird flyBird = new FlyBird();
        flyBird.birdMove("大雁");
    }
}

实体类1:

package com.geely.design.principle.singleresponsibility;

public class WalkBird {
    public void birdMove(String birdName){
        System.out.println(birdName+"用脚走!");
    }
}

实体类2:

package com.geely.design.principle.singleresponsibility;

public class FlyBird {
    public void birdMove(String birdName){
        System.out.println(birdName+"用翅膀飞!");
    }
}

打印日志:

鸵鸟用脚走!
大雁用翅膀飞!

2.2  接口的单一职责原则demo

接口1:

package com.geely.design.principle.singleresponsibility;

/**
 * 这个接口和获取内容的接口有先后顺序,只有开始学习,才能获取内容,如果退出学习,就不能在获取内容了,
 * 由于职责不同,所以设计两个接口符合单一职责原则
 */
public interface IcourseAction {
    void beginStudy();
    void quitStudy();
}

接口2:

package com.geely.design.principle.singleresponsibility;

/**
 * 注,本接口主要是获取课程的内容
 */
public interface IcourseContent {
    String getCourseText();//获取课程文本内容
    byte[] getCourseVideo();//获取课程的视频
}

实体类:

package com.geely.design.principle.singleresponsibility;

public class Course implements IcourseAction,IcourseContent{
    @Override
    public void beginStudy() {

    }

    @Override
    public void quitStudy() {

    }

    @Override
    public String getCourseText() {
        return null;
    }

    @Override
    public byte[] getCourseVideo() {
        return new byte[0];
    }
}

2.3  方法的单一职责原则demo

demo:

package com.geely.design.principle.singleresponsibility;

public class Method {
    /**
     * 正确,单一职责原则,修改用户的名称
     * @return
     */
    public String updateUserName(){
        return "";
    }

    /**
     * 正确,单一职责原则,修改用户的密码
     * @return
     */
    public String updateUserPassWord(){
        return "";
    }

    /**
     * 错误,作为对比
     * @return
     */
    public String updateUserInfo(String userId,String gender){
        return " ";
    }
    /**
     * 错误,作为对比
     * @param userId
     * @return
     */
    public String updateUserInfo2(String userId){
        return " ";
    }
}
原文地址:https://www.cnblogs.com/1446358788-qq/p/10982066.html