问题
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的一个关键体现就是面向接口编程。
六大原则相互解释和重合,都是为了提高代码的健壮性,可维护性以及可扩展性。
原文地址:https://www.cnblogs.com/alichengxuyuan/p/12577548.html