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();
        }
    }
  • 相关阅读:
    JAVA
    JAVA
    软件工程概论
    大道至简杂记
    InvokeRequired和Invoke
    C#代码:用事件模式实现通知
    VS 2012 C#快捷键
    error LNK2026: 模块对于 SAFESEH 映像是不安全的
    写EXCEL(csv 可以用EXECEL打开,逗号分列隔符)
    防止界面卡顿
  • 原文地址:https://www.cnblogs.com/o-andy-o/p/10311958.html
Copyright © 2011-2022 走看看