哈工大软件构造学习心得4


本文主要讲述OO设计原则:SOLID。
  

1 单一责任原则

  通俗的来说,单一责任原则,就是一个类实现的功能应该尽可能少。
  如果一个类承担的职责越多,,会引入额外的包,占据过多的资源,也会导致频繁的重新配置和部署,被复用的可能性也就越少。而且类中的职责相互耦合,当其中一个职责变化时,可能影响到其他职责的运作。

优点:
  每个类复杂性降低,实现简单;
  可复用性强,每个类实现的功能单一,可被多次复用;
  可维护性强,类与类之间耦合度低,该类出现异常不会影响其他类,容易定位错误位置并维护。

来看一个反例:
在这里插入图片描述

2 开放/封闭原则

  意即功能可扩展,实现不可更改。
  一个模块需要能够衍生出新的功能以适应应用场景的变化,但模块的自身的代码不允许被随便修改。但通常行为的更改是发生在源代码层面的,因此我们需要利用抽象技术解决这个问题。核心思想是对抽象编程,而不对具体编程。即将共性的行为抽象成接口或者抽象类,通过构造不同的子类实现接口或继承父类去实现独有的功能。

来看一个反例:
在这里插入图片描述

3 Liskov替换原则

  概括起来,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件的功能不受影响,基类才能被真正复用,而衍生类也能在基类的基础上增加新的行为。即继承必须确保超类所拥有的性质在子类也成立。

具体实现要求
  子类型可以增加方法,但不可删除父类的方法;
  子类型需要实现抽象类型中所有未实现的方法;
  子类的返回值必须与父类相同或者是父类的子类型;
  父类的参数必须与子类相同或者是子类的子类型;
  子类中重写的方法不能抛出额外的异常,且抛出的异常必须与父类相同或者是父类的子类型;
  对于继承父类中的犯法,子类中的方法必须与父类不变量强度相同或比父类有更强的不变量(更弱的前置条件或更强的后置条件)。

4 接口隔离原则

  即将一个类对另一个类的依赖建立在最小的接口上,不应该强迫客户端依赖不使用的方法。还应将胖接口分解为多个小接口。

5 依赖转置原则

  即高层次的模块不应该依赖于低层次的模块,而都应该依赖于抽象,抽象也不应该依赖于实现细节。要求我们对抽象进行编程,而不是对实现进行编程,这样可以降低客户与实现模块之间的耦合。

来看一个例子:
在这里插入图片描述

6 联系

依赖转置原则:相对于细节的多变性,抽象的东西更稳定。以抽象为基础搭建的框架比以细节为基础搭建的框架要稳定得多。在Java中就是,使用接口或抽象类制定规范和契约,将具体细节操作交给实现类。

开放/封闭原则:核心思想是用抽象搭建框架,用实现扩展细节。因为抽象的灵活性好,适用范围广,可以保持软件架构的稳定。而软件中的细节容易改变,当软件的需求发生变化时,我们只需要新建一个实现类就可以适应这个变化。

  归纳起来,实现依赖转置原则的过程体现了开闭原则。例如,有一个接口A,实现类B,我们现在有一个新的需求,我们可以直接编写一个实现类C,而不是去修改A的源代码。这就体现了对修改封闭,对扩展开放。意即开放/封闭原则是总的设计纲领,是最终软件构造需要实现的效果。其他所有的原则都是基于这个原则衍生的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值