• 设计模式课程 设计模式精讲 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 " ";
        }
    }
  • 相关阅读:
    Inner Classes with TypeScript
    设计模式(一)
    C++定义构造函数必须使用初始化列表的场合
    制作Linux下程序安装包——使用脚本打包bin、run等安装包
    Windows下将程序打包为安装包(最为简易的方式)
    在Linux中查看文件的编码及对文件进行编码转换
    libpcap文件格式分析
    static_cast, dynamic_cast, const_cast
    字符1与数字1
    Linux下的多线程编程
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/10982066.html
Copyright © 2020-2023  润新知