设计模式预热二 设计模式六原则

设计模式六大原则

1、开闭原则(Open Close Principle)

2、里氏代换原则(Liskov Substitution Principle)

3、依赖倒转原则(Dependence Inversion Principle)

4、接口隔离原则(Interface Segregation Principle)

5、迪米特法则(最少知道原则)(Demeter Principle)

6、单一职责原则(Single responsibility principle)

我们来具体看看如何理解这六个原则:

1、开闭原则(Open Close Principle)

开闭原则就是说对扩展开放,对修改关闭。软件系统中,在引入新功能时,应在不修改现有代码的基础上,引入新功能。 这相当于易于扩展,且降低了新功能上线带来的bug风险,因为如果添加新功能,需要将原来的代码进行大面积修改,那也预示着之前的功能需要重新测试,无疑是增加了bug的风险。

2、里氏代换原则(Liskov Substitution Principle)

这个原则定义的是父类和子类的关系。在软件系统中,子类应该可以替换父类出现的位置,并且替换之后,程序仍然可以正常运行。

(1)子类的能力必须大于等于父类,即父类可以使用的方法,子类都可以使用。(2)返回值也是同样的道理。假设一个父类方法返回一个List,子类返回一个ArrayList,这当然可以。如果父类方法返回一个ArrayList,子类返回一个List,就说不通了。这里子类返回值的能力是比父类小的。
(3)还有抛出异常的情况。任何子类方法可以声明抛出父类方法声明异常的子类。而不能声明抛出父类没有声明的异常。

3、依赖倒转原则(Dependence Inversion Principle)

依赖与抽象,而不依赖与具体实现;也就是面向接口编程。

我们平时写Web项目时,定义Service,都会先定义Service的interface,然后实现具体实现。

4、接口隔离原则(Interface Segregation Principle)

使用多个隔离的接口,来隔离不同的接口行为,也就是每个接口中定义的行为,都是一组相关的行为,而避免一个接口中定义大而全的功能,这样的好处是避免了某些类不需要某些行为,但是依然要实现接口中的一些方法。

5、迪米特法则(最少知道原则)(Demeter Principle)

为什么叫最少知道原则,就是说:一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。减少相互之间的依赖,降低耦合。

6、单一职责原则(Single responsibility principle)

一个类或一个方法,应该只有一个职责,如果有一个以上的职责,也就是把多个职责耦合到一起,当其中一个职责发生变化,可能会影响其他职责,不便于复用和维护。

上面这些原则都是在软件开发当中实践总结出来的经验。

当前如果不理解也没关系,因为这些概念是需要在实践中不断练习才能真正掌握的。