java中的设计模式之单一职责

单一职责原则(六大规则中的小萝莉,人见人爱)描述的意思是每个类都只负责单一的功能,切不可太多,并且一个类应当尽量的把一个功能做到极致

否则当你去维护这个系统的时候,你会后悔你当初的决定,下面是我自己思索的例子,给各位参考一下,给出代码。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;


public class Calculator {

    public int add() throws NumberFormatException, IOException{
        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 NumberFormatException, IOException {
        Calculator calculator = new Calculator();
        System.out.println("result:" + calculator.add());
    }
}

来看上面这个例子,这个方法的作用是从一个文件中读出两个数,并返回它们的和,我相信各位也能看出当中有明显的多职责问题。如果没看出来的话,我想问各位一句,如果我想算这个文件中两个数字的差该如何做?

          相信答案应该是我COPY出来一个div方法,把最后的加号改成减号。好吧,那我要除法呢?乘法呢?取模呢?COPY四次吗。这就造成了很多很多的代码重复,这不符合系统设计的规则。下面我把上述程序改善一下。

          我们分离出来一个类用来读取数据,来看Reader。

package com.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;


public class Reader {
    
    int a,b;
    
    public Reader(String path) throws NumberFormatException, IOException{
        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;
    }
}
下面是我们单独的计算器类。

package com.test;
import java.io.IOException;


public class Calculator {

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

我们将一个类拆成了两个类,这样以后我们如果有减法,乘法等等,就不用出现那么多重复代码了。

        以上是我临时杜撰的例子,虽然很简单,并且没有什么现实意义,但是我觉得足够表达单一职责的意思,并且也足够说明它的重要性。单一职责原则是我觉得六大原则当中最应该遵守的原则,因为我在实践过程中发现,当你在项目的开发过程中遵循它,几乎完全不会给你的系统造成任何多余的复杂性,反而会令你的程序看起来井然有序。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值