设计模式(六大原则之单一职责)

Posted guohaien

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式(六大原则之单一职责)相关的知识,希望对你有一定的参考价值。

概念:就一个类而言,应该仅有一个引起它变化的原因

  描述的意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致。如果一个类承担的职责过多,就等于把这些职责耦合在一起,这种耦合会导致脆弱的设计,即当其中一个职责发生变化时将会影响这个类完成其它职责的功能。以下代码就没有遵守该原则

public class Calculator {

    public int add() throws Exception{
        File file = new File("E:/data.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        int a = Integer.valueOf(br.readLine());
        int b = Integer.valueOf(br.readLine());
        return a+b;
    }
    
    public static void main(String[] args) throws Exception {
        Calculator calculator = new Calculator();
        System.out.println("result:" + calculator.add());
    }
}

  例子中的add方法拥有从文件中读取数字和对数字进行加法运算的职责。这将会导致我们若想增加一个减法运算的功能还得copy读取文件职责,当运算增加时,将会照成大量重复的代码。我们用两个类来实现这两个职责。

  用来读取文件数据的类,如下代码所示

public class Reader {
    
    int a,b;
    
    public Reader(String path) throws Exception{
        BufferedReader br = new BufferedReader(new FileReader(new File(path)));
        a = Integer.valueOf(br.readLine());
        b = Integer.valueOf(br.readLine());
    }
    
    public int getA(){
        return a;
    }
    
    public int getB(){
        return b;
    }
}

  用来进行运算的类,代码如下所示

public class Calculator {

    public int add(int a,int b){
        return a + b;
    }
    
    public static void main(String[] args) throws Exception {
        Reader reader = new Reader("E:/data.txt");
        Calculator calculator = new Calculator();
        System.out.println("result:" + calculator.add(reader.getA(),reader.getB()));
    }
    
}

  将职责拆分后当我们需要多个运算时就不会出现重复编写读取文件的代码。

  以上例子是出自左潇龙的博客,单一职责原则是我觉得六大原则当中最应该遵守的原则,在项目的开发过程中遵循它,减少大量重复的代码不会增加项目的复杂性,反而会令你的程序看起来井然有序。

总结:在开发过程中当发现有多于一个的动机会去改变一个类,那这个类就具有了多于一个的职责,就需要我们考虑对该类的职责进行分离。

以上是关于设计模式(六大原则之单一职责)的主要内容,如果未能解决你的问题,请参考以下文章

[5分钟]菜鸟修研之设计模式:六大设计原则

设计模式 - 六大设计原则之SRP(单一职责)

设计模式 - 六大设计原则之SRP(单一职责)

「设计模式」六大原则之一:单一职责小结

「设计模式」六大原则之一:单一职责小结

「设计模式」六大原则之一:单一职责小结