设计原则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{ //体现了人类与身份证类一对一的关系 private Sfz s = new Sfz(); } //身份证类 class Sfz{ } //=========================================================================== //学生类 class Student{ private Clazz c = new Clazz(); //一个学生在一个班级中 } //班级类 class Clazz{ private Student[] arr = new Student[20]; //一个班级里有多个学生 一对多关系 //或者 private List<Student> list= new ArrayList<>(); } //====================================================================================多对多 //教师类 class Teach{ //一个老师可以带多个课程 private List<Cou> list = new ArrayList<>(); } //课程类 class Cou{ //一个课程可以被多个老师带 private List<Teach> list = new ArrayList<>(); }
类与类之间的关系 3 聚合、组合
关联关系的细分出来的聚合、组合,关联关系的一些特例(一对多的具体分析)
聚合
整体和部分的关系。整体部分可分离,整体的生命周期和部分的生命周期不同
(例如:计算机与CPU、公司与员工、班级与学生的关系)
组合
整体和部分的关系。整体部分不可分离,比聚合更强,更加紧密