02 java中的solid原则

Posted 张力的程序园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02 java中的solid原则相关的知识,希望对你有一定的参考价值。

问题

java中的solid原则是什么

答案

  • Single Responsibility Principle:单一职责原则
    一个方法只做一件事情只有一个职责,一个类只做一组相关的事情、承担相近的职责。如果方法做了多个事情,当别人想使用这个方法中的第一个事情时,其他事情也不得不发生,如此一来就得拆分这个方法。如果这个方法在定义的时候就做一件事情,那么就不会被拆分,维护起来也方便好多,对于类也有这种约束。这就是单一职责原则。请看下面的代码:
//下面这个方法就不符合单一职责原则,因为调用者只想使用该方法创建一个数组,
//但是莫名其妙该数组被打印了出来;应该将打印的语句抽象成另外一个方法。
public static int[] createArrays(int length)
	{
		int[] arrays = new int[length];
		Random rd = new Random();
		for (int i = 0; i < arrays.length; i++)
		{
			arrays[i] = rd.nextInt(100);
		}
                //这一句话应该作为另一个方法被抽象出去
                System.out.println(Arrays.toString(arrays));
		return arrays;
	}
  • Open Closed Principle:开闭原则
    软件应该对修改源代码关闭,对扩展新功能开发,也就是说扩展新功能的时候最好是新代码。那么该如何做到这一点呢,面向接口编程。所谓面向接口编程就是完成一个功能之前,先定义对应的接口,调用者务必调用接口去使用该功能。请看下面的代码:
* Operator.java
public interface Operator {
    int exec(int a,int b);
}

* Add.java
public class Add implements Operator {
    @Override
    public int exec(int a, int b) {
        return a+b;
    }
}
* Test.java
public class Test {
    public static void main(String[] args) {
        Operator operator = new Add();
        System.out.println(operator.exec(1,2));
    }
}

倘若此时要增加乘法运算,只需要新增一个Multy.java类即可,无需修改原来的Add.java

  • Liskov Substitution Principle:里氏替换原则
    继承有其优势,可以减少代码重复,增加复用;然而,继承破坏了封装性,因此经常强调组合多于继承,就是既能增加复用也不破坏封装性。LSP原则通俗的来讲就是凡是父类出现的地方,都能用子类代替,具体要求有两个:子类必须完全实现父类的方法,调用的时候用父类调用;子类实现父类的方法输入参数最好放大。
  • Law of Demeter:迪米特法则
    又叫最少知识原则,即一个类对其他类知道地越少越好,如此一来,类之间的联系就减少到了不得不有才会有的程度,耦合性就会低很多。联系少了,复杂度就降低了,系统的稳定性就会好很多,即大道至简。
  • Interface Segregation Principle:接口隔离原则
    这与单一职责一脉相承,如果单一职责说的是类,那么ISP特指的就是接口。一个接口能分成多个接口就要分成多个接口,不能使用单一的接口。如果用户不得不使用单一的接口,那么用户也将不得不依赖了他不用的方法,那么用户也将不得不承担他不用的那些方法的改变对他的影响。因此,接口如果能拆分就应该拆分,换言之,接口中的方法要少,要集中。这就是接口隔离原则。
  • Dependence Inversion Principle:依赖倒置原则
    是指成高层不应该直接依赖底层,而应该依赖于底层的抽象。抽象不应该依赖细节,细节应该依赖抽象,抽象比细节要稳定可靠的多。DIP的一个关键体现就是面向接口编程。
    六大原则相互解释和重合,都是为了提高代码的健壮性,可维护性以及可扩展性。

以上是关于02 java中的solid原则的主要内容,如果未能解决你的问题,请参考以下文章

Python 中的 SOLID 原则

深入讲解 JAVA 设计模式六大原则——SOLID

适用于Java开发人员的SOLID设计原则简介

如何应用 SOLID 原则在 React 中整理代码之开闭原则

如何应用 SOLID 原则在 React 中整理代码之开闭原则

实践GoF的23的设计模式:SOLID原则(下)