• 设计模式课程 设计模式精讲 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 " ";
        }
    }
  • 相关阅读:
    第04组 Alpha冲刺(1/6)
    第04组 团队Git现场编程实战
    第04组 团队项目-需求分析报告
    Codeforces 652F 解题报告
    团队项目-选题报告
    php 基础 字符串转整形
    php 基础 判断类型
    php 基础 自动类型转换
    php 算false的情况
    php redis 集群扩展类文件
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/10982066.html
Copyright © 2020-2023  润新知