设计原则1 单一原则 高内聚,低耦合
设计原则2 开闭原则 OCP(重要) 对谁开放,对谁关闭
对扩展开放,对修改关闭
设计原则3 里氏替代原则 父类可以出现的地方,子类也可以出现(继承多态)
设计原则4 依赖倒置原则(重要) 核心是面向接口编程
设计原则5 接口分离原则 建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少
设计原则6 迪米特法则 尽量降低类与类之间的耦合
两个类之间不必彼此通信
设计原则7 组合聚合复用原则 优先使用对象组合,而不是类继承(要尽量使用合成和聚合,尽量不要使用继承)
类与类之间的关系 1 继承、实现 类与类之间的关系 2 依赖和关联 依赖关系 一个类A使用到另一个类B,但是这种使用关系是具有偶然性、临时性、是非常弱的。但是类B的变化会影响到类A
类B作为类A的方法参数(或者==局部变量==存在)
关联关系 比依赖关系强,必然的,长期的,强烈的
类B作为==成员变量==形成存在于类A中
一对一、一对多、多对多关系
package oop2.demo03;
import java.util.ArrayList; import java.util.List;
public class Test03 {
}
//人类 class People{
代码语言:javascript复制//体现了人类与身份证类一对一的关系
private Sfz s = new Sfz();
}
//身份证类 class Sfz{
}
//=========================================================================== //学生类 class Student{
代码语言:javascript复制private Clazz c = new Clazz(); //一个学生在一个班级中
}
//班级类 class Clazz{
代码语言:javascript复制private Student[] arr = new Student[20]; //一个班级里有多个学生 一对多关系
//或者
private List<Student> list= new ArrayList<>();
}
//====================================================================================多对多 //教师类 class Teach{
代码语言:javascript复制//一个老师可以带多个课程
private List<Cou> list = new ArrayList<>();
}
//课程类 class Cou{
代码语言:javascript复制//一个课程可以被多个老师带
private List<Teach> list = new ArrayList<>();
} 类与类之间的关系 3 聚合、组合 关联关系的细分出来的聚合、组合,关联关系的一些特例(一对多的具体分析)
聚合 整体和部分的关系。整体部分可分离,整体的生命周期和部分的生命周期不同
(例如:计算机与CPU、公司与员工、班级与学生的关系)
组合 整体和部分的关系。整体部分不可分离,比聚合更强,更加紧密