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的一个关键体现就是面向接口编程。

    六大原则相互解释和重合,都是为了提高代码的健壮性,可维护性以及可扩展性。

原文地址:https://www.cnblogs.com/alichengxuyuan/p/12577548.html

时间: 2024-10-09 10:15:10

02 java中的solid原则的相关文章

十个Java编程最高境界的原则

众所周知,Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计.查看Apache和Sun的开放源代码能帮助你发现其他Java设计原则在这些代码中的实际运用.Java Development Kit则遵循以下模式:BorderFactory类中的工厂模式.Runtime类中的单件模式.你可以通过Joshua Bloch的<Effective Java>一书来了解更多信息.我个人偏向的另一种面向对象的设计模式是Kathy Sierra的Head First Design Pat

设计模式之SOLID原则

设计模式中的SOLID原则,分别是单一原则.开闭原则.里氏替换原则.接口隔离原则.依赖倒置原则.前辈们总结出来的,遵循五大原则可以使程序解决紧耦合,更加健壮. 单一责任原则 指的是一个类或者一个方法只做一件事.如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化就可能抑制或者削弱这个类完成其他职责的能力.例如餐厅服务员负责把订单给厨师去做,而不是服务员又要订单又要炒菜. 开放封闭原则 对扩展开放,对修改关闭.意为一个类独立之后就不应该去修改它,而是以扩展的方式适应新需求.例如一开

[设计模式](转)Java中的24种设计模式与7大原则

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

架构中的设计原则之接口分离原则(ISP) - 《java开发技术-在架构中体验设计模式和算法之美》

接口分离原则 接口分离原则的核心思想是:不应该强迫客户程序依赖它们不需要使用的方法.英文缩写ISP,即Interface Segregation Principle.其实接口分离原则的意思就是:一个接口不需要提供太多的行为,一个接口应该只提供一种对外的功能,不应该 把所有的操作都封装到一个接口中. 这里的"接口"指的不仅仅是通过interface关键字定义的接口,接口分为如下两种. 对象接口.java中声明的一个类,通过new关键字产生的一个实例,它是对一个类型的事物的描述,这也是一种

Java中条件语句和if-else的嵌套原则

if(condition)Statement 在此时的条件语句中的条件是需要用括号把它括起来.   其实,Java中的条件语句和C/C++中的是一样的.而Java常常希望在某个条件为真的时候执行多条语句.此时,我们就会引入一个概念,那就是"块模块(block statement)",具体格式如下,仅供参考: { statement1 statement2 ... } 就拿下面的例子,我们来试试上面的这个格式吧! if(score>=90) system.out.println(&

java中的内存分配原则

问题:Java中这些类.变量.字符串.方法,在内存中是怎样分配的? 首先,Java中的内存区域如下: ◆寄存器:我们在程序中无法控制 ◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中.当在一段代码块定义一个变量时,Java就在栈中 为这个变量分配内存空间,当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用.实际上,栈中的变量指向堆内存中的变量,这就是Java中的指针! ◆堆:存放用new产生的数据.在堆中分配的内存,由J

在java中,OOA是什么?OOD是什么?OOP是什么?

OOA Object-Oriented Analysis:面向对象分析方法 是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题.OOA与结构化分析有较大的区别.OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析. OOA(面向对象的分析)模型由5个层次(主题层.对象类层.结构层.属性层和服务层)和5个活动(标识对象类.标识结构.定义主题.定义属性和定义服务)组成.在这种方法中定义了两种对象类之间的结构,

关于java中Double类型的运算精度问题

标题     在Java中实现浮点数的精确计算    AYellow(原作) 修改    关键字     Java 浮点数 精确计算   问题的提出:如果我们编译运行下面这个程序会看到什么?public class Test{    public static void main(String args[]){        System.out.println(0.05+0.01);        System.out.println(1.0-0.42);        System.out.

java中小数的处理:高精度运算用bigDecimal类,精度保留方法,即舍入方式的指定

一. 计算机的小数计算一定范围内精确,超过范围只能取近似值: 计算机存储的浮点数受存储bit位数影响,只能保证一定范围内精准,超过bit范围的只能取近似值. java中各类型的精度范围参见:http://blog.csdn.net/longshenlmj/article/details/47616481 编程时注意: doulbe类型的数,不能用等号判定是否相等(或者是一定范围内可以).因为两次同样的计算(除法)结果可能出现小数部分不同.甚至极端的时候,初始化两个小数时,都可能不相等(用数值和字