三大特性:
- 封装: 一个类封装了数据以及操作数据的代码逻辑体。定义了数据的可访问属性(私有、公有)
- 继承 : 可以让一个类型获取另外一个类型的属性的方式。分为实现继承和接口继承
- 多态 : 类实例的一个方法在不同情形下有不同的表现形式,即不同的外在行为。使具有不同的内部结构的对象可以共享相同的外部接口。
六大原则:
单一职责原则 : 每个类型(包括接口和抽象)功能要求单一,只负责一件事情。
开闭原则:一个软件实体应该对扩展开发,对修改关闭。可扩展但是不可更改。
核心:用抽象构建框架,用实现类实现扩展。
里氏替换原则:子类能够替换父类,出现在父类能够出现的任何地方。
“继承必须确保超类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系。
依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。这里的抽象就是接口或者抽象类,我们应该依赖接口或者抽象类 ,而不是依赖具体的实现来编程。核心思想是面向接口编程。
依赖原则基于的事实:相对于实现类的多变性,抽象的东西要稳定得多,基于抽象的构架也比基于实现的架构更加稳定,且扩展性更高。
接口分离原则:模块间要通过具体接口分离开,而不是通过类强耦合。例如A类对B类的依赖,可以抽象接口I,B实现I,A类依赖I来实现。但是抽象接口必须功能最小化(与单一功能原则有点不谋而合)。
迪米特原则:最小依赖原则,又叫作最少知识原则(Least Knowledge Principle 简写LKP),一个类对其他类尽可能少的了解,只与朋友通信,降低耦合。
总结:
单一职责原则告诉实现类要功能单一;
开闭原则则是总纲,对扩展开放,对修改封闭;
里式替换原则告诉我们不要破坏继承体系,而是去扩展;
依赖倒置原则告诉我们要面向接口编程;
接口分离原则告诉我们设计接口的时候功能要单一;
迪米特原则告诉我们类之间的依赖越少越好。