面向对象设计原则
面向对象设计
面向对象设计的目标之一在于支持可维护性复用,一方面需要实现设计方案或者源代码的重用,另一方面要确保系统能够易于扩展和修改,具有较好的灵活性。面向对象设计原则为支持可维护性复用而诞生。
7种常见的面向对象设计原则
1.单一职责原则
一个类只负责一个功能领域中的相应职责。
2.开闭原则
一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
3.里氏代换原则
所有引用父类的地方必须能透明的使用其子类的对象(在软件中将一个基类对象替换成他的子类对象,程序将不会产生错误或异常)(例如,我喜欢动物,那我喜欢狗,因为狗是动物的子类。反过来,我喜欢狗,不能说明我喜欢动物,老鼠也是一种动物,但我不喜欢老鼠)。
4.依赖倒转原则
抽象不应该依赖于细节,细节应当依赖于抽象。(即要针对接口编程呢个,而不是针对实现编程)。
在引入抽象层只有后,系统将具有很好的灵活性,在程序中尽量使用抽象层进行编程呢个,而将具体类写在配置文件中,这样一来,如果系统行为发生变化,只需要对抽象层进行扩展,并修改配置文件,而无需修改原有系统代码,就能扩展系统的功能,满足开闭原则要求。
在实现依赖倒转原则时,需要针对抽象层编程,而将具体类的对象通过依赖注入的方式注入到其他对象中(依赖注入是指当前一个对象要与其他对象发生依赖关系时,通过抽象来注入所依赖的对象。常用的注入方式有三种:构造注入,设值注入(Setter方法),接口注入)
5.接口隔离原则
使用多个专门的接口,而不是用单一的总接口,即客户端不应该依赖于那些它不需要的接口。
6.合成复用原则
尽量使用对象组合,而不是继承来达到复用的目的。
通过继承来进行复用的主要原因在于继承复用会破坏系统的封装性,因为继承会将父类的实现细节暴露给子类,由于父类的内部细节对子类来说是可见的,所以这种复用又称“白箱”复用,如果基类发生变化,那么子类的实现也不得不发生改变;从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性;而且继承只能在有限的环境中使用(如果类没有声明为不能继承)
7.迪米特法则
一个软件实体尽可能少的与其他实体发生相互作用。

浙公网安备 33010602011771号