类与类之间的关系
1、实现:一个类实现一个接口
2、泛化:一个类继承一个类
3、关联:是依赖、聚合、组合的统称,表示两个类之间有关系。
依赖:一个类是另一个类的方法参数,一类类是另一个类的方法返回类型,一个类是另一个类的局部变量。
聚合:一个类是另一个类的组成部分,整体和部分的关系,也就是一个类是另一个类的属性。
组合:组合就是一种强聚合,一个类是另外一个类不可分割的一部分,也表示一个类是另一个类的属性。
六大设计原则
单一职责原则:一个类只应该有一个引起它变化的原因,不要让一个类拥有多个变化的的理由,换句话说,一个类只应该做和一个职责相关的业务,不要让一个类拥有太多的职责。
开闭原则:软件实体应该面向修改关闭,面向扩展开放,其实现核心就是抽象。把相同的代码抽取出来,便于重用,这就是闭。把不同的代码也抽取出来,便于功能的扩展,这就是开。开闭原则是设计原则的核心原则。
迪米特法则:软件实体之间应该尽量减少交互,不要因为一个类业务的变化而导致另外一个类的变化。
接口隔离原则:使用专门的接口比用统一的接口好。便于项目的组织和分工。不要让开发者面对自己使用不到的方法。
依赖倒置原则:面向抽闲编程,不要面向具体编程。
里氏替换原则:父类出现的地方,子类一定可以替换,如果父类方法在子类中不适用,或者发生畸变,则建议断开父子关系。采取聚合/组合达到代码的复用。父类方法子类无条件继承,很容易造成父类方法在子类中不能适用的情况。
自定义的第七大原则:聚合/组合复用原则,尽量使用聚合/组合达到代码重用,少用继承重用。因为继承局限性比较大,继承只能单根继承,无法通过继承重用多个类中的代码,但是聚合/组合可以做到。
高内聚,低耦合:高内聚指的就是单一职责原则,一个类职责越单一,内聚度越高。低耦合指的是依赖导致原则,尽量使用抽象耦合区代替具体耦合。