Oriented-Object Design - S.O.L.I.D
S.O.L.I.D
单一职责原则 Single Responsibility Principle
一组与同一职责紧密相关的函数和数据结构,同一个类只负责同一个职责
如:计算面积的类不打印,打印的类不计算面积
开放封闭原则 Open Close Principle
对象或者实体应该对扩展操作开放,而对修改操作封闭
如:计算面积的类,可以通过override它的function计算面积而对不同图形(实现同一图形接口的类)进行扩展
里氏替换原则 Liskov Substitution Principle(继承类有意义)
任何一个子类或者派生类应该可以替换他们的父类或基类,如果继承,那么每个继承而来的函数或者数据结构都应该有意义(不能强迫一个类继承他用不上的父类)
如:人类是父类,实现方法是颜色,吃饭,如果不同人种作为子类是符合这个原则的,因为不同人种颜色不一样,但是都有意义,也都可以吃饭;如果机器人继承人类这个父类,那么颜色make sense,但是吃饭是不行的,那么使用时这个机器人就不能替换人类这个父类,就违反了原则
接口分离原则 Interface Segregation Principle(实现接口有意义)
不能强迫一个类实现他用不上的接口
如:有一个类,是叫几何体,那么会有计算面积和计算体积的方法,如果一个长方体实现这个接口没有问题,但是如果是一个长方形实现这个接口就有问题了,因为长方形不能计算体积,或者你可以牵强的说他的体积是0,但是这并没有什么意义
依赖反转原则 Dependency Inversion Principle
抽象不应该依赖于具体的实现,相反,具体实现应该依赖于抽象,同样Hight-level的实体不应该依赖于Low-level的实体
如:在一个类A中有一个成员变量其类型为B,此时A就依赖了B,我们需要把B抽象化,抽象类或者接口即可
Comments
Post a Comment