设计模式
- OOP、OOA、OOD
- 7大设计原则
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 原型模式
- 构建者模式
- OOA:object-oriented analysis 面向对象分析
- OOD:object-oriented design 面向对象设计
- OOP:object-oriented programing 面向对象编程
UML
用例图、类图、对象图、状态图。。。
- 面向对象设计要解决的问题:可维护性,可复用性和可扩展性。
设计原则 | 定义 | 使用频率 |
---|---|---|
单一职责 | 负责单一 | **** |
开闭原则 | 对扩展开放,对修改关闭,总纲 | ***** |
里氏代换原则 | 继承, 扩展性,不要破坏继承体系 | *** |
依赖倒转原则 | 面向接口,抽象不应该依赖于细节,细节应该依赖抽象 | *** |
接口隔离原则 | 拆分多个接口 | **** |
合成复用原则 | 尽量使用对象组合,不要继承 | **** |
迪米特法则 | 软件实体类尽可能少与其他实体发生相互作用,最少认知原则 | ** |
- 开闭原则 加抽象类
- 单一职责 定义类的【粒度】OOAD 分析设计
- 接口分离 解决复用性 扩展性
- 里氏替换 子类所有方法必须再父类中声明, 父类已经实现的方法子类无需再替换,是开闭* * 原则最佳实践,子类要实现父类中所有抽象方法
- 依赖倒置 解决扩展性 变量类型 参数类型 方法返回 数据类型转换 尽量引用层次高的抽象层类, 使用接口和抽象类。
- 合成复用 尽量使用组合聚合关系,少用继承,用成员变量使用
- 迪米特法则 类的边界,高内聚低耦合,那些事朋友:
- this
- 传参
- 返回值
- 成员变量
- 创建型 工厂 单例 原型 构建者
- 结构型 适配器 装饰 代理 外观 桥接 组合 享元
- 行为性 模板方法 策略 观察者 中介者 状态 责任链
- 简单工厂模式 不想关心构建细节 千篇一律 使用配置文件 map创建bean
- 构建者模式 千人千面
- 工厂方法 抽象工厂的工厂
- 抽象工厂 产品族
- 静态内部类单例,类加载过程被jvm 保护
- 枚举单例 自行实现了反 反射和序列化破坏机制