设计模式原则
单一职责原则:每个类做专一的功能,多个功能由多个类完成。
开放封闭原则:开放指类和模块、函数可扩展,即对于每个实体类都做一个抽象类,那就可以保证,每次需要扩展一个类的时候只需要实现一个类,而其他依赖它的类无需改动。
例子A,小明用铁锅炒蔬菜,这里一共有三个类:小明、铁锅、蔬菜,小明使用到了铁锅、铁锅里面装有蔬菜,即小明依赖了铁锅,蔬菜依赖了装它的容器铁锅,若此时需要将铁锅换成不粘锅,则不仅要新写不粘锅类,还需要将原本引用铁锅的蔬菜、小明处的代码全都改成不粘锅,这显然是扩展性差的体现。正确的设计代码结构的方式是将小明抽象为一个类(人),铁锅、不粘锅抽象为一个类(烧菜的容器)、蔬菜抽象为一个类(食物),然后将各种实体类继承于这些抽象类,这样的好处是当需要将铁锅换成不粘锅时,只需新写一个继承装菜容器这一抽象类的不粘锅类即可,而无需改动引用它的地方。
封闭指的是尽量不修改原有的类,若要修改,尽量采取增量修改的方式,扩充类或者扩充成员函数。
依赖转换原则:1. 高层模块不应该依赖于低层模块,高层模块和底层模块都应该有它的抽象;例子A就是一个符合该条的例子;因此,在设计结构的时候,高层不直接调用底层,而在两者之间封一层抽象类,高层调用抽象类的接口,从而调用到底层的模块;2. 抽象不应该依赖细节,细节应该依赖抽象。
里氏代换原则:子类类型必须能够替换掉它们的父类类型,抽象出来的父类能符合子类的共性特征。若代码结构不满足里氏代换原则,也就不满足依赖转换原则的第二条。