zoukankan      html  css  js  c++  java
  • 设计模式之单一职责原则

    一.单一职责(Single Responsibility Principle,简称SRP ): 一个类只负责一项职责

    原始定义:There should never be more than one reason for a class to change。

    官方翻译:应该有且仅有一个原因引起类的变更。简单点说,一个类,最好只负责一件事,只有一个引起它变化的原因。

    错误示范:

    public interface IPhotograph {
        void photograph();
    }
    
    public interface IPlayMusic {
        void playMusic();
    }
    //一个类负责两个功能
    public class MobilePhone implements IPhotograph, IPlayMusic {
    
        @Override
        public void playMusic() {
            System.out.println("play music");
        }
    
        @Override
        public void photograph() {
            System.out.println("take photo");
        }
    
    }
    
    public class SRP {
        //拍照和播放音乐两个当中的任何一个功能的改动都要修改手机类,因为现在的手机既负责拍照又负责播放音乐
        public static void main(String[] args) {
            MobilePhone phone = new MobilePhone();
            IPhotograph photographer = phone;//是照相机
            IPlayMusic player = phone;//是音乐播放器
            photographer.photograph();
            player.playMusic();
        }
    }

    正确做法:

    public interface IPhotograph {
        void photograph();
    }
    
    public interface IPlayMusic {
        void playMusic();
    }
    //一个类负责一个功能
    public class MusicPlayer implements IPlayMusic{
        @Override
        public void playMusic() {
            System.out.println("play music");
        }
    
    }
    
    //一个类负责一个功能
    public class Carmera implements IPhotograph {
        @Override
        public void photograph() {
            System.out.println("take photo");
        }
    
    }
    
    public class SRP {
        //拍照和播放音乐两个类各司其职
        public static void main(String[] args) {
            IPhotograph photographer = new Carmera();//是照相机
            IPlayMusic player = new MusicPlayer();//是音乐播放器
            photographer.photograph();
            player.playMusic();
        }
    }
  • 相关阅读:
    阿里云ECS安装sqlserver,本地无法连接问题排查思路
    1433端口无法连接(sql server 数据库无法访问问题)解决思路
    开源框架 电商参考系统
    版本控制工具 Git 只下载开源项目的某个文件夹
    VUE 在idea中的运行项目
    开源框架 Java Guns 03 数据库替换为sqlite
    SQL Server 用ip地址登录 127.0.0.1
    开源框架 UI框架
    电商 电商系统汇总
    电商 平台汇总
  • 原文地址:https://www.cnblogs.com/o-andy-o/p/10311958.html
Copyright © 2011-2022 走看看