开闭原则:对扩展开放,对修改关闭。
=>理想情况下。当我们需要增加一个新的功能时,只需要从原来的类中潘生出一些新的类就可以,不需要修改原来的任何一行代码。
里氏替换原则:继承必须确保超类所拥有的的性质在子类中仍然成立。
=>任何时候都可以用子类替换掉父类型。
=>注意:子类是增加父类的能力,而不是减少父类的能力,因为子类比父类能力更多,把能力多的对象当成能力少的对象来用肯定没有问题。
=>举例:让长方形去继承正方形就是错误的
依赖倒置原则:要面向接口编程,不要面向实现编程。
=>尽可能的使用抽象类型,因为抽象类象可以被他的任何一个子类所替代。
单一职责原则:控制类的粒度大小,将对象解耦、提高其内聚性。
=>(就是一个类只做它该做的事情)(高内聚,低耦合)
接口隔离原则:要为各个类建立它们需要的专用接口。
=>接口要小而专,而不能大而全。一个接口只描述一种能力。就像琴棋书画就应该设计成四个接口,而不是设计成一个接口中的四个方法,毕竟这四种都精通的人还是少数。
迪米特法则:又叫最少知识原则。只和你的直接朋友交谈。不和“陌生人”说话。(如果你想和陌生人说话,要通过你的这个直接朋友)
=>一个对象应当对其他对象有尽可能少的了解。
合成聚合复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
=>注意:任何时候都不要继承工具类,工具是可以拥有并使用的,而不是拿来继承的。